本文介绍了GoF中的解释器模式。
模式推演
用简单的语言控制鸭子
归纳语法
将每种语法用一个类表示
代码实例
Expression接口
1 | public interface Expression { |
Variable类
1 | class Variable implements Expression { |
Repetition & Sequence
1 | class Repetition implements Expression { |
QuackCommand & RightCommand & FlyCommand
1 | class QuackCommand implements Expression { |
语法解析Parse类
1 | class Parser { |
Main函数
1 | public class Main { |
执行结果
1 | Duck Right.. |
定义
解释器模式(Interpreter Pattern):为语言创建解释器。
用途:
- 用于实现一门简单的语言;
- 当有一个简单的语法,而且简单比效率更重要时,使用解释器;
- 可以处理脚本语言和编程语言。
优点:
- 将每一个语法规则表示成一个类,方便于实现语言;
- 因为语法由很多类表示,所以可以轻易地改变或扩展此语言;
- 通过在类结构中加入新的方法,可以在解释的同时增加新的行为,例如打印格式的美化或者进行复杂的长须验证。
缺点:
- 当语法规则的数目太大时,这个模式可能会变得非常繁杂。在这种情况下,使用解析器/编译器的产生器可能更合适。