解析器模式

来源:互联网 发布:java单元测试的好处 编辑:程序博客网 时间:2024/05/22 11:34

定义:

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

适用性:

当有一个语言需要解释执行,并且你可以将该语言中的句子表示为一个抽象羽凡树是,可以使用解释器模式。

1.该文法简单对于复杂的文法,文法的类层次变得庞大而无法管理。

2.效率不是一个关键问题最高效的解释器不是通过直接解释语法分析树实现的,而是首先将它们转换成另一种形式。

类图:


代码:

package designPatterns;import java.util.ArrayList;import java.util.List;abstract class Expression {abstract void interpret(Context context);}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 void add(Expression eps) {list.add(eps);}public List<Expression> getList() {return list;}}class AdvanceExpression extends Expression {void interpret(Context context) {System.out.println(this.getClass());}}class SimpleExpression extends Expression {void interpret(Context context) {System.out.println(this.getClass());}}public class InterpreterTest {public static void main(String[] args) {Context context= new Context();/*Expression exp = new AdvanceExpression();exp.interpret(context);*/context.add(new AdvanceExpression());context.add(new SimpleExpression());context.add(new AdvanceExpression());context.add(new SimpleExpression());for(Expression exp :context.getList()){exp.interpret(context);}}}

结果:

class designPatterns.AdvanceExpression
class designPatterns.SimpleExpression
class designPatterns.AdvanceExpression
class designPatterns.SimpleExpression

原创粉丝点击