设计模式(十五)----- 解释器模式(Interpreter)----(JAVA版)
2013-01-09 19:42
627 查看
解释器模式
给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子适用性
当有一个语言需要解释执行,并且你可以将该语言中的句子表示为一个抽象语法树时,可以使用解释器模式。而当存在以下情况时,该模式效果最好1.该文法简单对于复杂的文法,文法的层次变得庞大而无法管理
2.效率不是一个关键问题。最高效的解释器通常不是通过直接解释语法分析树实现的,而是首先将它们转换成另一种形式
参与者
1.AbstractExpression(抽象表达式)声明一个抽象的解释操作,这个接口为抽象语法树中所有的节点所共享
2.TerminalExpression(终结符表达式)
实现与文法中的终结符相关联的解释操作。一个句子中的每个终结符需要该类的一个实例
3.NonterminalExpression(非终结符表达式)
为文法中的非终结符实现解释(Interpret)操作
4.Context(上下文)
包含解释器之外的一些全局信息
5.Client
构建(或被给定)表示该文法定义的语言中一个特定的句子的抽象文法树。该抽象语法树由TerminalExpression和NonterminalExpression的实例装配而成
一个例子
1.AbstractExpressionpublic interface Expression { void interpret(Context c); }
2.Expression
public class SimpleExpression implements Expression { @Override public void interpret(Context c) { System.out.println("这是简单解释器。。。"); } }
public class AdvanceExpression implements Expression { @Override public void interpret(Context c) { System.out.println("这是先进解释器。。。"); } }
3.Context
public class Context { private String content; private List<Expression> list = new ArrayList<Expression>(); public String getContent() { return content; } public void setContent(String content) { this.content = content; } public List<Expression> getList() { return list; } public void add(Expression e) { list.add(e); } }
4.test
public class Test { public static void main(String[] args) { Context c = new Context(); c.add(new SimpleExpression()); c.add(new AdvanceExpression()); c.add(new SimpleExpression()); for (Expression eps : c.getList()) { eps.interpret(c); } } }
result
这是简单解释器。。。
这是先进解释器。。。
这是简单解释器。。。
参与文献:
1.http://rainbowj234.diandian.com/post/2011-11-20/69676842./article/5110149.html
3./article/4497443.html
相关文章推荐
- JAVA设计模式十五:--Interpreter(解释器模式)
- 设计模式(Design Pattern) - 行为型模式(Behavioral Pattern) - 解释器模式(Interpreter) - Java实现
- Java设计模式--解释器模式【Interpreter Pattern】
- 设计模式java——解释器模式
- Java模式- Interpreter(解释器模式)
- JAVA设计模式(22):行为型-解释器模式(Interpreter)
- java设计模式23——解释器模式(Interpreter)
- JAVA设计模式(23) —<行为型>解释器模式(Interpreter)
- JAVA--解释器模式(Interpreter)--设计模式二十三
- 设计模式(二十)之设计模式之 Interpreter(解释器)
- 设计模式(行为型模式) ----- 解释器模式(Interpreter)
- Java私塾:研磨设计模式 之 解释器模式(Interpreter)3
- 设计模式学习笔记--解释器模式Interpreter与访问者模式Visitor(Java版)
- JAVA设计模式(22):行为型-解释器模式(Interpreter)
- 【设计模式 java】——解释器模式(Interpreter)
- JAVA设计模式(十五)——解释器模式
- Java设计模式十四:解释器模式(Interpreter)
- 解释器模式(Interpreter)Java
- Java开发中的23种设计模式详解----解释器模式(Interpreter)
- Java 实现解释器(Interpreter)模式