解释器模式使用一个解释器为用户提供一门定义语言的语法表示解释器,通过该解释器来解释语言中的句子。
、
class Context
{
public:
Context(int num)
{
m_num = num;
}
public:
void setNum(int num)
{
m_num = num;
}
int getNum()
{
return m_num;
}
void setRes(int res)
{
m_res = res;
}
int getRes()
{
return m_res;
}
private:
int m_num;
int m_res;
};
class Expression
{
public:
virtual void interpreter(Context* context) = 0;
};
class PlusExpression : public Expression
{
public:
virtual void interpreter(Context* context)
{
int num = context->getNum();
num++;
context->setNum(num);
context->setRes(num);
}
};
class MinusExpression : public Expression
{
public:
virtual void interpreter(Context* context)
{
int num = context->getNum();
num--;
context->setNum(num);
context->setRes(num);
}
};
int main() {
Context* pcxt = new Context(10);
Expression* e1 = new PlusExpression;
e1->interpreter(pcxt);
cout << "PlusExpression:" << pcxt->getRes() << endl;
Expression* e2 = new MinusExpression;
e2->interpreter(pcxt);
cout << "MinusExpression:" << pcxt->getRes() << endl;
delete e2;
delete e1;
system("pause");
return 0;
}