解释器模式(Interpreter)

意图

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

动机

如果一种特定类型的问题发生的频率足够高 , 那么可能就值得将该问题的各个实例表述为一个简单语言中的句子。这样就可以构建一个解释器 , 该解释器通过解释这些句子来解决该问题。

解释器模式描述了如何为简单的语言定义一个文法 , 如何在该语言中表示一个句子 , 以及如何解释这些句子。

适用性

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

而当存在以下情况时该模式效果最好:

参与者

效果

解释器模式有下列的优点和不足:

示例一:通用源代码

1566204300213

示例二:模拟Java语言中对布尔表达式进行操作和求值

1566206365127

1566206385894

示例三:与或逻辑判断

1566266011822

示例四:动作解释翻译器

1566267051781

1566267474832