- 解释器模式:定义一种语言的文法表示,并创建一个解释器,该解释器能够解释该语言中的句子。
- 主要角色:
- 抽象表达式
- 终结符表达式
- 非终结符表达式
- 上下文
- 客户端
#include <iostream>
using namespace std;
/*
* 解释器模式
* */
class Context {
public:
Context(int num) {
this->num = num;
}
void setNum(int num) {
this->num = num;
}
int getNum() {
return num;
}
void setRes(int res) {
this->res = res;
}
int getRes() {
return res;
}
private:
int num;
int res;
};
class Expression {
public:
virtual ~Expression() {}
virtual void interpreter(Context* context) = 0;
private:
Context* context;
};
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() {
Expression *ex = NULL;
Context* ct = NULL;
ct = new Context(10);
cout << ct->getNum() << endl;
ex = new PlusExpression();
ex->interpreter(ct);
cout << ct->getNum() << endl;
cout << ct->getRes() << endl;
delete ex;
ex = new MinusExpression();
ex->interpreter(ct);
cout << ct->getNum() << endl;
cout << ct->getRes() << endl;
delete ex;
delete ct;
return 0;
}
GOF设计模式C++实例: