设计模式---解释器模式(C++实现)
/********************************************************************************************************
解释器模式:
解释器上下文环境类。用来存储解释器的上下文环境,比如需要解释的文法等
将某一种输入,按照某种要求进行转化操作
**********************************************************************************************************/
#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");
}
参考来源:传智播客--王保明
设计模式---解释器模式(C++实现)相关推荐
- Python设计模式-解释器模式
Python设计模式-解释器模式 代码基于3.5.2,代码如下; #coding:utf-8 #解释器模式class PlayContext():play_text = Noneclass Expre ...
- 设计模式 | 解释器模式及典型应用
微信原文:设计模式 | 解释器模式及典型应用 博客原文:设计模式 | 解释器模式及典型应用 本文主要介绍解释器模式,在日常开发中,解释器模式的使用频率比较低 解释器模式 解释器模式(Interpret ...
- 解释器android,Android的设计模式-解释器模式
前言 Android的设计模式系列文章介绍,欢迎关注,持续更新中: 1.定义 给定一门语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子. 2.介绍 解释器模式属于行 ...
- C++设计模式-解释器模式
目录 基本概念 代码与实例 基本概念 解释器模式(interpreter):给定一个语言,定义他的文法的一种表示,并定义一个解释器,这个解释器应该使用该表示来解释语言中的句子. 如果一种特定类型的问题 ...
- 深入浅出设计模式——解释器模式(Interpreter Pattern)
模式动机 如果在系统中某一特定类型的问题发生的频率很高,此时可以考虑将这些问题的实例表述为一个语言中的句子,因此可以构建一个解释器,该解释器通过解释这些句子来解决这些问题. 解释器模式描述了如何构成一 ...
- PHP设计模式——解释器模式
声明:本系列博客参考资料<大话设计模式>,作者程杰. 解释器模式:Given a language, define arepresentation for its grammar alon ...
- 初识设计模式 - 解释器模式
简介 在某些情况下,为了更好地描述某一些特定类型的问题,我们可以创建一种新的语言,这种语言拥有自己的表达式和结构,即文法规则. 解释器设计模式(Interpreter Design Pattern)描 ...
- C++设计模式——解释器模式(interpreter pattern)
一.原理讲解 1.1意图 给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子. 1.2应用场景 文法简单.对于复杂的文法,文法的类层次变得庞大而无法管理:此 ...
- Java设计模式--解释器模式
解释器模式 给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子. Interpreter Pattern Given a language, define ...
- 设计模式——解释器模式
名称 Interpreter 结构 意图 给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子. 适用性 当有 1// Interpreter 2 ...
最新文章
- 要求学生从事教学科研无关内容,把学生当廉价劳动力的导师将被严肃处理!...
- python编程语言能干什么-这 13个,1 行Python代码能干哪些事?
- 软件技术专业-就业提示(二、测试工程师)
- 转:并发与并行的区别
- [转帖]AjaxControlToolkit.TabContainer 自定义样式续
- 【实践驱动开发3-001】TI WL1835MODCOM8 在android的移植 - 准备
- 罗永浩“真还传”再出番外篇,被执行1800万,交个朋友回应来了…
- ip命令手册: 使用iproute2工具进行路由表管理和路由策略管理
- 第十节:Web爬虫之数据存储与MySQL8.0数据库安装和数据插入
- java 线程池 连接池_浅析Tomcat高并发之连接池、线程池
- UCI数据集详解及其数据处理(附148个数据集及处理代码)
- [生存志] 第3节 序 汉字的韵脚和格律(下)
- 会议OA之会议排座送审
- android简易计算器
- 调用WPS服务COM组件转换PDF
- 【BZOJ 2330】 [SCOI2011]糖果【差分约束】
- 证据权重 (WOE) 与信息价值 (IV)
- 3.18 使用橡皮擦工具制作图像合成效果 [原创Ps教程]
- ctf php正则截断,记[BJDCTF2020]ZJCTF,不过如此 关于php的正则匹配问题
- 牵手“懂行人” ,桂电要做教育数字化转型先行者