解释器模式
来源:互联网 发布:解压war linux tar 编辑:程序博客网 时间:2024/05/16 16:12
解释器模式
- 解释器模式
- 概念
- 角色及职责
- 案例
概念
解释器模式是行为型模式之一,描述了如何为简单的语言定义一套语法,如何在该语言中表示一个句子,以及如何解释这些句子,然后执行相应的动作和行为!
角色及职责
Context
解释器上下文环境类。用来存储解释器的上下文环境,比如需要解释的文法等。AbstractExpression
解释器抽象类。ConcreteExpression
解释器具体实现类。
案例
#include <iostream>using namespace std;/*上下文环境--客户端通过他获取解释结果*/class Context{public: Context(int num)//上下文环境需要一个构造函数--存放待解释的信息 { this->m_num = num; } int getNum() { return m_num; } int getRes()//返回结果 { return m_res; } void setNum(int num) { this->m_num = num; } void setRes(int res) { this->m_res = res; }private: /*待解释的内容*/ int m_num; /*解释后的结果*/ int m_res;};/*抽象解释器--定义了解释行为函数*/class Expression{public: virtual void interpreter(Context *context) = 0;private: Context *m_context;//解释器里面含有上下文环境做成员变量--以便提取待解释的信息};//加法--具体解释器--实现基类纯虚函数class PlusExpression : public Expression{public: PlusExpression()//纯虚函数 { this->context = NULL; } virtual void interpreter(Context *context)//模拟解释的过程 { int num = context->getNum(); num ++; context->setNum(num);//设置解释结果到上下文环境 context->setRes(num); }private: Context *context;//解释器里面含有上下文环境做成员变量--以便提取待解释的信息};// 减法--具体解释器class MinusExpression : public Expression{public: MinusExpression() { this->context = NULL; } virtual void interpreter(Context *context) { int num = context->getNum(); num -- ; context->setNum(num); context->setRes(num); }private: Context *context;};/*测试案例*/int main(){ Expression *expression = NULL; Context *context = NULL; Expression *expression2 = NULL; context = new Context(10); cout << context->getNum() << endl; expression = new PlusExpression; expression->interpreter(context); cout << context->getRes() << endl; expression2 = new MinusExpression; expression2->interpreter(context); cout << context->getRes() << endl; return 0;}
0 0
- 深入浅出解释器模式
- 解释器(Interpreter )模式
- Interpreter解释器模式
- Interperter 解释器模式
- 解释器模式 InterpretePattern
- 解释器模式
- 解释器模式
- 深入浅出解释器模式
- 解释器模式(python)
- 解释器模式
- 解释器模式 详解
- 解释器模式
- Java解释器模式
- 解释器模式
- Interpreter 解释器模式
- java 解释器模式
- 解释器模式
- 解释器模式
- URL转义
- 场外资金加速入场 大盘吹起牛市号角!
- java中的NIO
- C语言练习
- untiy HTC开发 入门教程
- 解释器模式
- Ionic填坑日记(二)
- 求最大利益的算法
- 寻路和动画融合
- Android 自定义Dialog的简单实现
- Android源码学习笔记:学前准备
- div嵌套引起的margin-top不起作用
- 具有前瞻性的投资者才能成为“投资家”
- 高屋建瓴&&脚踏实地 &&洗心革面&&重新做人