解释器模式(Interpreter Pattern)
The Interpreter pattern interprets a language to define a representation for its grammar along with an interpreter that uses the representation to interpret sentences in the language.
1、AbstractExpression
-声明一个抽象的解释操作,这个接口为抽象语法树中所有的节点所共享。
2、TerminalExpression
-实现与文法中的终结符相关联的解释操作。
-一个句子中的每个终结符需要改类的一个实例。
3、NoterminalExpression
-对文法中的每一条规则R::==R1R2...Rn都需要一个NoterminalExpression类。
-为从R1到Rn的每个符号都维护一个AbstractExpression类型的实例变量。
-为文法中的非终结符实现解释(Interpret)。解释一般递归的调用表示R1到Rn的那些对象的解释操作。
4、Context 上下文
-构建(或被给定)表示该文法定义的语言中一个的特定的句子的抽象语法树。该抽象语法树由NonterminalExpression和TerminalExpression的实例装配而成。
-调用解释操作。
interface AbstractExpression { public Object interpret(String info); }
class TerminalExpression implements AbstractExpression { public Object interpret(String info) { } }
class NonterminalExpression implements AbstractExpression { private AbstractExpression exp1; private AbstractExpression exp2; public Object interpret(String info) { } }
class Context { private AbstractExpression exp; public Context() { } public void operation(String info) { } }
《设计模式:可复用面向对象软件的基础》
原文:https://www.cnblogs.com/diameter/p/13220718.html