天天看點

最簡單的解釋器模式

最簡單的解釋器模式

了解:一個被解釋對象(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;
           

}