设计模式--行为型--解释器模式
2012-11-26 09:42
197 查看
一、解释器模式简介(Brief Introduction)
解释器模式(Interpreter Pattern),给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。使用了解释器模式,可以很容易地改变和扩展文法,因为该模式使用类来表示文法规则,可以使用继承来改变或扩展该文法。也比较容易实现文法,因为定义抽象语法树中各个节点的类的实现大体类似,这些类容易直接编写。二、解决的问题(What To Solve)
如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语言中的句子,这样就可以构建一个解释器,该解释器通过解释这些句子来解决问题。三、解释器模式分析(Analysis)
AbstractExpression:定义解释器的接口,约定解释器的操作
TerminalExpression:终结符解释器,用来实现语法规则中和终结符相关的操作,
不再包含其他的解释器,如果用组合模式来构建抽象语法树的话,就相当于组合模式中的叶子对象,可以有多种终结符解释器
NonterminalExpression:非终结符解释器,用来实现语法规则中非终结符相关的操作,通常一个解释器对应一个语法规则,可以包含其他的解释器,如果用组合模式来构建抽象语法树的话,就相当于组合模式中的组合对象。可以有多种非终结符解释器
Context:上下文,通常包含各个解释器需要的数据或是公共的功能
Client:客户端,指的是使用解释器的客户端,通常在这里将按照语言的语法做的表达式转换成为使用解释器对象描述的抽象语法树,然后调用解释操作
四、实例代码
1、上下文Contextpublic class Context { public void print(){ System.out.println("=======利用上下文数据========"); } }
2、解释器接口及其实现
public abstract class AbstractExpression { public abstract void interpret(Context context); }
public class TerminalExpression extends AbstractExpression { public void interpret(Context context) { context.print(); System.out.println("调用终止符表达式Terminal.Interpret()"); } }
public class NoTerminalExpression extends AbstractExpression { public void interpret(Context context) { context.print(); System.out.println("调用非终止符表达式 Nonterminal.Interpret()"); } }
3、客户端调用
public class Client { public static void main(String[] args) { Context context = new Context(); TerminalExpression te = new TerminalExpression(); NoTerminalExpression nte = new NoTerminalExpression(); te.interpret(context); nte.interpret(context); } }
运行结果:
相关文章推荐
- GoF23种设计模式之行为型模式之解释器模式
- 十八.行为型设计模式——Interpreter Pattern(解释器模式)
- 设计模式笔记(16)---解释器模式(行为型)
- “设计模式”学习之七:解释器与中介者(行为型)
- 设计模式16——行为型模式之解释器模式
- GoF23种设计模式之行为型模式之解释器模式
- 设计模式(15)--Interpreter(解释器模式)--行为型
- 设计模式之行为型模式(责任链、命令、解释器、迭代式、仲裁者、备忘录、观察者、状态、策略、模板方法、访问者)
- 设计模式笔记(16)---解释器模式(行为型)
- 设计模式笔记(16)---解释器模式(行为型)
- 设计模式(二十三)—解释器模式(行为型)
- 设计模式22---设计模式之解释器模式(Interpreter)(行为型)
- 设计模式笔记--行为型模式-之三 解释器
- 行为型设计模式-解释器模式
- JAVA设计模式(22):行为型-解释器模式(Interpreter)
- 设计模式(15)-行为型-解释器模式(Interpreter)
- 设计模式(二十)解释器模式(Interpreter)-行为型
- 设计模式-行为型模式,解释器模式(12)
- 【设计模式】—-(19)解释器模式(行为型)
- 23种设计模式4--行为型模式(策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式)