设计模式初探-解释器模式(二)

2014-11-24 03:00:02 · 作者: · 浏览: 1
INode{ private String distance; public DistanceNode(String distance){ this.distance = distance; } @Override public String interpret() { return distance; } } /** * 指令处理类,用于抽象语法树,工具类. */ class InstructionHandler{ private INode node; public void handle(String sentence){ INode left=null,right=null,direction=null,action=null,distance=null; Stack stack = new Stack (); //用stack存储抽象语法树 String[] words = sentence.split(" ");//以空格分隔操作码字符串 for(int i=0; i 运行结果:

向上移动8再向右快速移动10再向左移动6
四、模式优缺点

优点:

1、易于改变和扩展文法。由于解释器模式采用类来表示文法规则,可以通过继承来改变或扩展原有文法。

2、易于实现文法。定义抽象语法树中的各个节点的类实现相似,易于直接编写,也方便采用编译器或语法分析生成器自动生成。

2、方便添加新的解释表达式。你可以在表达式类上定义新的操作以支持优美打印或表达式类型检查,优化,代码生成等,通常结合Visitor模式更佳。

缺点:

1、复杂的文法难以维护。复杂的文法会导致类层次的庞大,从而难以管理。此时可以采用编译器或语法分析程序来实现语法的解释。