设计模式——解释器模式
Posted winsons
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式——解释器模式相关的知识,希望对你有一定的参考价值。
一、概念:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。
二、UML示意图
上下文Context存储了需要解释的表达式信息。定义一个抽象Expression类和一个接受表达式上下文用来的Interpret接口,终结符表达式和非终结符表达式(非终结符表达式又有可能由更下级的非终结符表达式组成,所有这里呈现出NonTerminateExpression和Expression的一个聚合关系)继承自抽象表达式类并实现解释方法Interpret。
三、优缺点
优点:
- 易于改变和扩展文法。由于在解释器模式中使用类来表示语言的文法规则,因此可以通过继承等机制来改变或扩展文法。
- 实现文法较为容易。在抽象语法树中每一个表达式节点类的实现方式都是相似的,这些类的代码编写都不会特别复杂
缺点:
- 对于复杂文法难以维护。在解释器模式中,每一条规则至少需要定义一个类,因此如果一个语言包含太多文法规则,类的个数将会急剧增加,导致系统难以管理和维护,此时可以考虑使用语法分析程序等方式来取代解释器模式。
- 执行效率较低。解释器模式中通常使用大量的循环和递归调用,当要解释的句子较复杂时,其运行速度很慢,且代码的调试过程也比较麻烦。
- 可应用的场景比较少。
以上是关于设计模式——解释器模式的主要内容,如果未能解决你的问题,请参考以下文章