#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;
class Context
{
public:
Context(){}
virtual ~Context(){}
virtual void Print(){cout<<"I am Context!";}
};
class Expression
{
public:
Expression(){}
virtual ~Expression(){}
virtual void Interpret(Context* p) = 0;
};
class TeminalExpression:public Expression
{
string m_Data;
public:
TeminalExpression(string str):m_Data(str){}
virtual ~TeminalExpression(){}
virtual void Interpret(Context* p){
p->Print();
cout<<"结束表达式:"<<m_Data<<endl;
}
};
class UnteminalExpression:public Expression
{
Expression* m_pEx;
int nTime;
public:
UnteminalExpression(Expression* p,int n):m_pEx(p),nTime(n){}
virtual ~UnteminalExpression(){}
virtual void Interpret(Context* p){
for(int i = 0; i < nTime; i++){
cout<<i<<":";
m_pEx->Interpret(p);
}
}
};
int main(int argc, char *argv[])
{
Context* c = new Context;
TeminalExpression* pTem = new TeminalExpression("hello");
UnteminalExpression* pUntem = new UnteminalExpression(pTem,2);
pUntem->Interpret(c);
delete pUntem;
delete pTem;
delete c;
system("PAUSE");
return EXIT_SUCCESS;
}
Interpret 模式
最新推荐文章于 2020-11-03 20:18:36 发布