/********************************************************************************************************
解释器模式:
解释器上下文环境类。用来存储解释器的上下文环境,比如需要解释的文法等
将某一种输入,按照某种要求进行转化操作
**********************************************************************************************************/
#include <iostream>
#include <string>
using namespace std;
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 *explain = new Context(10);//设置要解释的内容
Expression *e1 = new PlusExpression;//设置解释器
e1->interpreter(explain);//调用解释器内的解释函数
cout << "PlusExpression:" << explain->getRes() << endl;//得到数据结果
Expression *e2 = new MinusExpression;
e2->interpreter(explain);
cout << "MinusExpression:" << explain->getRes() << endl;
delete e2;
delete e1;
system("pause");
解释器模式:
解释器上下文环境类。用来存储解释器的上下文环境,比如需要解释的文法等
将某一种输入,按照某种要求进行转化操作
**********************************************************************************************************/
#include <iostream>
#include <string>
using namespace std;
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 *explain = new Context(10);//设置要解释的内容
Expression *e1 = new PlusExpression;//设置解释器
e1->interpreter(explain);//调用解释器内的解释函数
cout << "PlusExpression:" << explain->getRes() << endl;//得到数据结果
Expression *e2 = new MinusExpression;
e2->interpreter(explain);
cout << "MinusExpression:" << explain->getRes() << endl;
delete e2;
delete e1;
system("pause");
}
参考来源:传智播客--王保明