码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式——解释器模式

时间:2020-03-22 17:30:34      阅读:60      评论:0      收藏:0      [点我收藏+]

标签:alt   调试   int   解释器   比较   聚合   关系   info   应用   

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

二、UML示意图

技术图片

 

 

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

三、优缺点

优点:

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

缺点:

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

设计模式——解释器模式

标签:alt   调试   int   解释器   比较   聚合   关系   info   应用   

原文地址:https://www.cnblogs.com/winsons/p/12546886.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!