解释模式
2015-09-29 22:18
357 查看
概念
角色和职责
Context:解释器上下文环境类。用来存储解释器的上下文环境,比如需要解释的文法等。
AbstractExpression : 解释器抽象类。
ConcreteExpression:解释器具体实现类。
案例
角色和职责
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 ; }
相关文章推荐
- 编译和解释的区别是什么?
- hdoj 5478 Can you find it 【找恒等式 + 快速幂】
- guava中扩展容器的一些常用类和方法(一)
- iOS 线程
- 数组指针,二级指针
- 04.C语言运算符
- CoreText的绘制流程-转
- leetcode263 : Ugly Number
- 验证视图状态 MAC 失败。如果此应用程序由网络场或群集承载,请确保 <machineKey> 配置指定了相同的...
- Lecture5-2Effective number of lines
- 常用的Javascript表单正则验证函数
- 03.C语言Scanf函数
- java一切皆对象的理解,以及new关键字的理解
- 条件编译
- B\S备忘录番外篇——啊!这是一篇总结!
- 状态模式
- 例题5.2 独轮车 UVa10047
- XA两阶段提交协议
- shell 玩转文件描述符 和 重定向
- The Bus Driver Problem