设计模式——解释器模式

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

二、UML示意图

 

 

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

三、优缺点

优点:

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

缺点:

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