博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
24行为型模式之解释模式
阅读量:4323 次
发布时间:2019-06-06

本文共 1325 字,大约阅读时间需要 4 分钟。

概念

 

角色和职责

 

Context

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

AbstractExpression   

   解释器抽象类。

ConcreteExpression

  解释器具体实现类。

适用于:

   解释器根据中介结果实现对应的运算。

 

案例

//加号、减号解释器,根据上下文储存内容再加载到解释器中,进行对应的运算

#include 
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 ;}

  

 

转载于:https://www.cnblogs.com/gd-luojialin/p/10358118.html

你可能感兴趣的文章
2.4.6 计算机语言表示算法
查看>>
Android SDK简介-读书笔记(一)
查看>>
android 构建数据库SQLite
查看>>
单工、半双工和全双工的定义
查看>>
Hdu【线段树】基础题.cpp
查看>>
时钟系统
查看>>
BiTree
查看>>
5个基于HTML5的加载动画推荐
查看>>
水平权限漏洞的修复方案
查看>>
静态链接与动态链接的区别
查看>>
Android 关于悬浮窗权限的问题
查看>>
如何使用mysql
查看>>
增强一个对象的方法(继承、装饰者模式、动态代理)
查看>>
十一、多线程——8-线程池
查看>>
四、基础类库中的常用类——4-国际化与格式化
查看>>
Anders Hejlsberg访谈:Checked Exceptions的问题
查看>>
revit api 使用过滤器
查看>>
几日工作记录
查看>>
linux下wc命令详解
查看>>
敏捷开发中软件测试团队的职责和产出是什么?
查看>>