#include <iostream>
#include <string>
#include <vector>
using namespace std;
class Context;
class AbstractExpression
{
public:
virtual ~AbstractExpression(){}
virtual void Interpret(Context* context) = 0;
};
class TerminalExpression : public AbstractExpression
{
public:
virtual void Interpret(Context* context){cout << "终端解释器" << endl;}
};
class NonterminalExpression : public AbstractExpression
{
public:
virtual void Interpret(Context* context){cout << "非终端解释器" << endl;}
};
class Context
{
public:
string input;
string output;
};
//客户端
int main()
{
Context* context = new Context();
vector<AbstractExpression*> express;
express.push_back(new TerminalExpression());
express.push_back(new NonterminalExpression());
express.push_back(new NonterminalExpression());
vector<AbstractExpression*>::iterator p = express.begin();
while (p != express.end())
{
(*p)->Interpret(context);
delete (*p);
p++;
}
delete context;
return 0;
}
解释器模式
最新推荐文章于 2023-06-29 07:37:36 发布