解释器模式

Posted 人生如逆旅,我亦是行人。

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解释器模式相关的知识,希望对你有一定的参考价值。

参考文章:

http://www.cnblogs.com/chenssy/p/3346427.html

 

定义:

 

定义语言的文法,并且建立一个解释器来解释该语言中的句子

 

uml类图:

模式组成:

 

  • AbstractExpression: 抽象表达式。声明一个抽象的解释操作,该接口为抽象语法树中所有的节点共享。
  • TerminalExpression: 终结符表达式。实现与文法中的终结符相关的解释操作。实现抽象表达式中所要求的方法。文法中每一个终结符都有一个具体的终结表达式与之相对应。
  • NonterminalExpression: 非终结符表达式。为文法中的非终结符相关的解释操作。
  • Context: 环境类。包含解释器之外的一些全局信息。

 

优点:

  • 可扩展性比较好,灵活
  • 增加了新的解释表达式的方式
  • 易于实现文法

 

缺点:

  • 执行效率比较低,可利用场景比较少
  • 对于复杂的文法比较难维护

 

应用场景:

  • 有一个简单的语法规则,比如一个sql语句,如果我们需要根据sql语句进行rm转换,就可以使用解释器模式来对语句进行解释。
  • 一些重复发生的问题,比如加减乘除四则运算,但是公式每次都不同,有时是a+b-c*d,有时是a*b+c-d,等等等等个,公式千变万化,但是都是由加减乘除四个非终结符来连接的,这时我们就可以使用解释器模式。

 

      • java.util.Pattern
      • java.text.Normalizer
      • java.text.Format

以上是关于解释器模式的主要内容,如果未能解决你的问题,请参考以下文章

设计模式----解释器模式

设计模式解释器模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )

大话设计模式Python实现-解释器模式

设计模式之解释器模式

设计模式——23.解释器模式

Java进阶篇设计模式之九----- 解释器模式和迭代器模式