设计模式之Interpreter(解释器)
2019独角兽企业重金招聘Python工程师标准>>>
Interpreter解释器模式定义:
定义语言的文法 ,并且建立一个解释器来解释该语言中的句子.
Interpreter似乎使用面不是很广,它描述了一个语言解释器是如何构成的,在实际应用中,我们可能很少去构造一个语言的文法.我们还是来简单的了解一下:
首先要建立一个接口,用来描述共同的操作.
public interface AbstractExpression {
void interpret( Context context );
}
再看看包含解释器之外的一些全局信息
public interface Context { }
AbstractExpression的具体实现分两种:终结符表达式和非终结符表达式:
public class TerminalExpression implements AbstractExpression {
public void interpret( Context context ) { }
}
对于文法中没一条规则,非终结符表达式都必须的:
public class NonterminalExpression implements AbstractExpression {
private AbstractExpression successor;
public void setSuccessor( AbstractExpression successor ) {
this.successor = successor;
}
public AbstractExpression getSuccessor() {
return successor;
}
public void interpret( Context context ) { }
}
转载于:https://my.oschina.net/sunzhyng/blog/372069
设计模式之Interpreter(解释器)相关推荐
- 设计模式之 Interpreter(解释器) 通俗理解
23种设计模式 1 Interpreter定义: 定义语言的文法 ,并且建立一个解释器来解释该语言中的句子.通俗来讲就是定义一套规则,然后有个工具类,根据你传入的参数就知道你表达的意思. Interp ...
- 设计模式学习笔记——解释器(Interpreter)模式
设计模式学习笔记--解释器(Interpreter)模式 @(设计模式)[设计模式, 解释器模式, Interpreter] 设计模式学习笔记解释器Interpreter模式 基本介绍 解释器案例 类 ...
- java设计模式适配器模式_Java解释器设计模式
java设计模式适配器模式 Interpreter design pattern is one of the behavioral design pattern. Interpreter patter ...
- 设计模式之略见一斑(解释器模式Interpreter)
解释器模式是一种比较难理解的模式,但如果你对Command(命令模式)和Composite(组合模式)很了解的话,你会发现其实解释器模式就是这两种的组合.为何要使用解释器模式,如何用解释器模式呢,这就 ...
- Net设计模式实例之解释器模式(Interpreter Pattern)
一.解释器模式简介(Brief Introduction) 解释器模式(Interpreter Pattern),给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言 ...
- [设计模式-行为型]解释器模式(Interpreter)
一句话 看起来是用来解释一种语言的文法.(类似不同的解释器子类解释不同的字符) 和编译器类似的解释器, 实际状况可能使用的比较少. 概括 解析 INTERPRETER-俺有一个<泡MM真经> ...
- 设计模式之15 - 解释器模式Interpreter
1. 解释器模式(Interpreter Pattern)的定义 (1)定义 给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子. ①文法:即语法规则.在解 ...
- 《研磨设计模式》chap21 解释器模式Interpreter(2)parse模型
1. 定义 读取表达式,构建抽象语法树,叶子类,节点类,context上下文 step1:分解表达式,得到需要解析的元素名称和该元素对应的解析模型 step2:根据节点的属性转换成为相应的解释器对象 ...
- 《研磨设计模式》chap21 解释器模式Interpreter(1)模式介绍
场景:读写xml文件,如果代码"写死了":谁是谁的child,万一文件父子节点改了,又要改代码. 1. 正常编码(不使用模式) public class ReadAppXml {/ ...
- [转载] C#面向对象设计模式纵横谈——16 Interpreter解释器模式
主讲:李建忠 来源:http://www.microsoft.com/china/msdn/events/webcasts/shared/webcast/consyscourse/CsharpOOD. ...
最新文章
- Ubuntu下dex2jar的安装和使用
- Part1: Specification of Required Functions
- ROS笔记——Create a cropped bagfile(创建一个已裁剪的包文件)
- 自定义ActionBar
- 一文超详细讲解文本风格迁移
- Java好还是Python好?一张图告诉你!
- Vim快捷键(四):Vim查找与替换
- java rgb565转rgb888_RGB565 与 RGB888的相互转换
- 梦三国测试服显示连接服务器失败,我的登陆进去以后说与服务器失去连接怎么回事...
- Calculate Tangent Space是怎么计算切线的
- 测判三极管的口诀 (挑战者)
- ae教程 (五)滤镜特效 (五)描边光效
- 常见linux服务器存储空间,怎么在linux上查看服务器的存储空间多大
- AO3401-ASEMI场效应管AO3401
- 计算机网络体系结构划分
- 磁盘柜支持linux,linux 连接磁盘柜
- CTC 论文阅读笔记
- WordPress 大前端dux5.0Plus(添加:添加主机推荐和联系我们模块;)-dux5.0 增加首页公告模块
- WinImage 8.10注册算法简单分析
- 魔兽世界随身助手 已从服务器断开,魔兽世界APP常见问题解答 魔兽世界随身助手APP常见问题解决方案...
热门文章
- linux怎么点亮硬盘灯_一种基于Linux系统下测试Expander背板硬盘指示灯的方法及系统与流程...
- 计算机硬件英语单词有哪些,计算机硬件英语词汇
- delphi7 增加管理员权限_EHR系统的权限设计
- php5.4 无法连接mongo,php连接MongoDB总是失败,为什么?
- 高淇Struts2.0教程之视频笔记(4)
- Hive 实用的第三方 UDF 收集
- AC日记——计算循环节长度 51nod 1035
- HTML学习基础教程
- proc文件系统、sysfs文件系统、kobject操作
- HDU3954 线段树(区间更新 + 点更新)