设计模式 —— 解释器模式

解释器模式(Interpreter),给定一个语言,定义它的文法的一种表示,并定义一个解释器,用这个解释器使用该表示来解释语言中句子。解释器模式需要解决的是,如果一种特定类型的问题发生的频率足够高,那么可能就值得。

在开篇之前还是要科普几个概念:
抽象语法树
解释器模式并未解释如何创建一个抽象语法树。它不涉及语法分析。抽象语法树可用一个表驱动的语法分析程序来完成,也可用手写的(通常为递归下降法)语法分析程序创建,或直接client提供。

解析器
指的是把描述客户端调用要求的表达式,经过解析,形成一个抽象语法树的程序。

解释器
指的是解释抽象语法树,并执行每个节点对应的功能的程序。

要使用解释器模式,一个重要的前提就是要定义一套语法规则,也称为文法。不管这套文法的规则是简单还是复杂,必须要有这些规则,因为解释器模式就是按照这些规则来进行解析并执行相应的功能的。

enter image description here

案例:

一个计算器。(目前只能加减/或者乘除,并且必须按照一定格式)

接口,让子类必须存在此方法

主要用于存放数字的类

符号抽象类。定义规则,存在符号左侧变量及右侧变量。

一下是加减乘除操作类

计算器类,用户解析表达式,并进行计算。

调用计算

 

一个比简单粗俗的计算器完成。

参考链接:

http://www.cnblogs.com/chenssy/p/3346427.html

http://www.html-js.com/article/2085