设计模式目录
http://blog.csdn.net/fenglailea/article/details/52733435
风.fox

解释器模式 Interpreter Pattern

给定一门语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子

通用类图

组成

  • 抽象解释器 AbstractExpression
    具体的解释任务由各个实现类完成,具体的解释器分别由TerminalExpression和NonterminalExpression完成。
  • 终结符表达式 TerminalExpression
    实现与文法中的元素相关联的解释操作,通常一个解释器模式中只有一个终结符表达式,但有多个实例,对应不同的终结符。具体到我们例子就是VarExpression类,表达式中的每个终结符都在堆栈中产生了一个VarExpression对象。
  • 非终结符表达式 NonterminalExpression
    文法中的每条规则对应于一个非终结表达式,具体到我们的例子就是加减法规则分别对应到AddExpression和SubExpression两个类。非终结符表达式根据逻辑的复杂程度而增加,原则上每个文法规则都对应一个非终结符表达式。
  • 环境角色 Context

通用源码

JAVA

//抽象表达式
public abstract class Expression {//每个表达式必须有一个解析任务public abstract Object interpreter(Context ctx);
}
//终结符表达式
public class TerminalExpression extends Expression[//通常终结符表达式只有一个,但是有多个对象public Object interpreter(Context ctx){return null;}
}
//非终结符表达式
public class NonterminalExpression extends Expression[//每个终结符表达式都会对其他表达式产生依赖public NonterminalExpression(Expression... expression){}public Object interpreter(Context ctx){//进行文法处理return null;}
}
//场景
public class Client{public static void main(String[] arg){Context ctx = new Context();//通常定义一个语法容器,容纳一个具体的表达式,通常为ListArray,LinkedList,Stack等等Stack&Expression>stack =null;for(;;){.....}//产生一个完整的语法树,由各个具体的语法分析进行解析Expression exp=stack.pop();//具体元素进入场景exp.interpreter(ctx);}
}

使用场景

重复发生的问题
一个简单语法需要解释的场景

适配器模式之解释器模式相关推荐

  1. 设计模式之解释器模式(Interpreter)摘录

    23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而 ...

  2. Java设计模式之行为型:解释器模式

    一.什么是解释器模式:         解释器模式,就是定义语言的文法,并建立一个解释器来解释该语言中的句子,通过构建解释器,解决某一频繁发生的特定类型问题实例. 这里我们将语言理解成使用规定格式和语 ...

  3. 【白话设计模式二十二】解释器模式(Interpreter)

    为什么80%的码农都做不了架构师?>>>    #0 系列目录# 白话设计模式 工厂模式 单例模式 [白话设计模式一]简单工厂模式(Simple Factory) [白话设计模式二] ...

  4. java设计模式适配器模式_Java解释器设计模式

    java设计模式适配器模式 Interpreter design pattern is one of the behavioral design pattern. Interpreter patter ...

  5. 图解Java设计模式学习笔记——行为型模式(模版方法模式、命令模式、访问者模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式)

    一.模板方法模式(模板模式)--钩子方法 1.需求-豆浆制作问题 编写制作豆浆的程序,说明如下: 制作豆浆的流程选材-->添加配料-->浸泡-->放到豆浆机打碎. 通过添加不同的配料 ...

  6. 【设计模式】--解释器模式

    四则运算 通过解释器模式来实现四则运算,如计算a+b-c的值,具体要求 先输入表达式的形式,比如 a+b+c-d+e, 要求表达式的字母不能重复 在分别输入a ,b, c, d, e 的值 最后求出结 ...

  7. 设计模式之观察者模式、中介者模式、迭代器模式、访问者模式、备忘录模式、解释器模式

    前言 这是设计模式的最后一章,包含了剩余的 行为型模式 中的 观察者模式.中介者模式.迭代器模式.访问者模式.备忘录模式.解释器模式 系列文章 第一章:7种设计原则之单一职责原则.接口隔离原则.依赖倒 ...

  8. 设计模式之解释器模式

    解释器模式字面意思,也即解释某些内容的含义.这种设计模式是实际开发中最不容易用到的.比如SQL解析,符号处理引擎,会用到解释器模式,属于更底层的开发人员才会用到的设计模式. 本文就以解释器模式的概念. ...

  9. 【设计模式】解释器模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )

    文章目录 一.解释器模式简介 二.解释器模式适用场景 三.解释器模式优缺点 四.解释器模式与适配器模式 五.解释器模式代码示例 1.解释器接口 2.加法解释器 3.乘法解释器 4.整型解释器 5.语法 ...

  10. 【每天一个java设计模式(十四)】 - 解释器模式

    解释器模式提供了评估语言的语法或表达式的方式,它属于行为型模式.这种模式实现了一个表达式接口,该接口解释一个特定的上下文. 解释器模式主要包括以下几个部分: 抽象表达式角色:定义解释器的接口,约定解释 ...

最新文章

  1. Jpeg解码小结(一)
  2. s7-200与计算机modbus通讯案例,【案例】S7-200SMART MODBUS通信介绍与实例编程
  3. powershell共享服务器写文件,Windows PowerShell:共享您的脚本 - 轻松实现
  4. oracle sql语句大全
  5. shell 进入hadoop_Hadoop关于HDFS的基本操作(Shell命令)
  6. springboot整合curator实现分布式锁
  7. 龙芯ejtag 单步调试pmon
  8. Linux中jemalloc的安装与使用
  9. {dede-list flag='h'}DedeCMS支持flag标签解决办法
  10. x86 x64 x86_64 AMD64 区别
  11. uni-app:搜索关键词并高亮显示,可重复显示
  12. 强制横屏java_Android强制设定横屏时,SurfaceView一直黑屏
  13. 仙剑奇侠传3 全开注册表改法
  14. 基于STM32设计的UNO卡牌游戏(双人、多人对战)
  15. 康考迪亚大学获560万加元捐赠以鼓励创造力,是魁北克美术学院有史以来最大一笔捐赠
  16. java丧尸危机全城爆发_伤尸危机-全城爆发BT版
  17. RNA-seq 详细教程:分析流程介绍(1)
  18. 华为:交付服务体系怎么提升一线作业人员的工作体验?
  19. codeSourcery 交叉编译环境搭建
  20. 尚硅谷在线教育五:尚硅谷在线教育讲师管理开发

热门文章

  1. 只上传APK而不进行反编译,在服务器集成第三方SDK。是如何实现的
  2. git clone权限被拒绝
  3. editplus3编辑器颜色修改
  4. was如何使用gzip_一文详解前端Node原生模块zlib,开启gzip压缩让页面响应速度更快...
  5. 拓端tecdat|R语言近似贝叶斯计算MCMC(ABC-MCMC)轨迹图和边缘图可视化
  6. 拓端tecdat:R语言KMEANS均值聚类和层次聚类:亚洲国家地区生活幸福质量异同可视化分析和选择最优聚类数
  7. 拓端tecdat|数据类岗位需求的数据面
  8. 操作系统-管程、进程和线程之间的差别
  9. pythonint函数的参数_pythonint函数怎么用
  10. Ubuntu下yolov4训练自己的数据集