![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIwczX0xiRGZkRGZ0Xy9GbvNGL2EzXlpXazxSP9cnW1Z1RhpWOxgVds1WYmljVaBHazwEMW1mY1RzRapnTtxkb5ckYplTeMZTTINGMShUYfRHelRHLwEzX39GZhh2css2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xyayFWbyVGdhd3LcV2Zh1Wa9M3clN2byBXLzN3btg3Pn5GcuQDOxEzNwkDMxAzMwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
了解:一個被解釋對象(Context),把該對象交給解釋器,解釋器(AbstractExpression)會對該對象的符号用相應的解釋模型(XExpression)去解釋。
這個解釋可能有點太抽象了,但是解釋模式本身就是這些,而解釋的過程往往會很負責,這個模式的難點,不在于模式本身,而在于模式的運用。
上代碼吧:(如果您覺得:這簡單的有點過分了把,那麼請看另一篇《解釋模式簡單實作》)
#include
#include
using namespace std;
// 抽象層
class Context{
};
class AbstractExpression{
public:
virtual void Interpret(Context& context)=0;
};
//具體層
class TerminalExpression:public AbstractExpression{
public:
virtual void Interpret(Context& context){
cout<<“解釋解釋\n”;
}
};
class NonterminalExpression:public AbstractExpression{
public:
AbstractExpression* next;
virtual void Interpret(Context& context){
cout<<“解釋開始\n”;
next->Interpret(context);
}
};
class Client{
public:
static void main(){
TerminalExpression te;
NonterminalExpression ne;
ne.next = &te;
Context c;
ne.Interpret©;
}
};
//用戶端調用
int main()
{
cout<<“解釋器模式示範\n”;
Client::main();
//看代碼不用考慮以下内容
int cin_a;
cin>>cin_a;
return 0;
}