Java设计模式(二十三)解释器模式

解释器模式

解释器模式

是指给定一门语言,定义它的文法的一种表示。并定义一个解释器,该解释器使用该表示来解释语言中的句子。是一种按照语法(文法)进行解析的模式,属于行为型模式。

适用情景

  1. 一些重复出现的问题可以用一种简单的语言来进行表达;
  2. 一个简单语法需要解释的场景。

角色

  1. 抽象表达式(Expression):负责定义一个解释方法interpret,交由具体子类进行具体解释。
  2. 终结符表达式(TerminalExpression):
  3. 非终极符表达式(NonterminalExpression):
  4. 上下文环境(Context):

实例

使用解释器模式解析数学表达式

优点

  1. 扩展能力强:在解释器模式中由于语法是由很多类表示的,当语法规则更改时,只需要修改相应的非终结表达式即可;若扩展语法时,只需添加相应非终结符即可。
  2. 增加了新的解释表达式的方法;
  3. 易于实现文法:解释器模式对应的文法应范式比较简单且易于实现的,过去复杂的语法并不适用解释器模式。

缺点

  1. 语法规则较复杂是,回引起类膨胀:解释器模式每个语法都要产生一个非终结符表达式,当语法规则较为复杂是,会产生大量的解释器,增加系统维护难度。
  2. 执行效率比较低:解释器模式采用递归调用方法。每个非终结符表达式只关系与自己有关表达式,把每个表达式需要知道最终的结果,因此完整表达式的最终结果是用过从后往前递归调用的方法获取得到。当完整表达式层次较深是,解释效率下降,且出错时调试困难,因为递归迭代层级太深。

你可能感兴趣的:(Java设计模式)