【设计模式】行为模式之解释器Interpreter

解释器Interpreter是一种类行为型设计模式,目的是给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。当有一个语言需要解释执行,并且可将该语言中的句子表示为一个抽象语法树时,可使用解释器模式,最常见的问题便是搜索匹配问题,以及随之而产生的正则表达式引擎。

解释器模式的结构如下图:

【设计模式】行为模式之解释器Interpreter_第1张图片

上图中,AbstractExpression即抽象表达式,声明一个抽象的解释操作,这个接口为抽象语法树中所有的节点所共享。TerminaExpression即终结符表达式,实现与文法中的终结符相关联的解释操作,一个语句中的每个终结符需要该类的一个实例。NonterminalExpression即非终结符表达式,对文法中的每一条规则都需要一个该类,为每个符号都维护一个AbstractExpression类型的实例变量,为文法中的非终结符实现解释操作,解释一般要递归地调用表示各个对象的解释操作。Context即上下文,包含解释器之外的一些全局信息。Client构建或被给定表示该文法定义的语言中的一个特定的句子的抽象的语法树,该抽象语法树由NonterminalExpression和TerminaExpression的实例装配而成,然后初始化上下问并调用解释操作。每一非终结符表达式节点定义相应子表达式的解释操作,而各终结符表达式的解释操作构成了递归的基础,每一节点的解释器操作用上下文来存储和访问解释器的状态。

你可能感兴趣的:(设计与架构)