设计模式——解释器模式

Posted winsons

tags:

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

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

二、UML示意图

技术图片

 

 

 上下文Context存储了需要解释的表达式信息。定义一个抽象Expression类和一个接受表达式上下文用来的Interpret接口,终结符表达式和非终结符表达式(非终结符表达式又有可能由更下级的非终结符表达式组成,所有这里呈现出NonTerminateExpression和Expression的一个聚合关系)继承自抽象表达式类并实现解释方法Interpret。

三、优缺点

优点:

  • 易于改变和扩展文法。由于在解释器模式中使用类来表示语言的文法规则,因此可以通过继承等机制来改变或扩展文法。
  • 实现文法较为容易。在抽象语法树中每一个表达式节点类的实现方式都是相似的,这些类的代码编写都不会特别复杂

缺点:

  • 对于复杂文法难以维护。在解释器模式中,每一条规则至少需要定义一个类,因此如果一个语言包含太多文法规则,类的个数将会急剧增加,导致系统难以管理和维护,此时可以考虑使用语法分析程序等方式来取代解释器模式。
  • 执行效率较低。解释器模式中通常使用大量的循环和递归调用,当要解释的句子较复杂时,其运行速度很慢,且代码的调试过程也比较麻烦。
  • 可应用的场景比较少。

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

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

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

设计模式之解释器模式

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

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

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