您的位置:首页 > 其它

解释模式

2015-09-29 22:18 357 查看
概念



角色和职责



Context:解释器上下文环境类。用来存储解释器的上下文环境,比如需要解释的文法等。

AbstractExpression : 解释器抽象类。

ConcreteExpression:解释器具体实现类。

案例

#include <iostream>
using namespace std;
#include "string"

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);
}
};

void 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 ;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  解释模式