24种设计模式学习笔记之解释器模式

解释器模式------行为模式

   给定一个语言之后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器。客户端可以使用这个解释器来解释这个语句中的句子。

UML图

 

 

 

  • AbstarctExpression(抽象表达式):在抽象表达式种声明了抽象的解释操作,它是所有终结符表达式和非总结符表达式的公共父类。

    TerminalExpression(终结符表达式):终结符表达式是抽象表达式的子类,它实现了与文法中的终结符相关的解释操作,在句子中的每一个终结符都是该类的一个实例。 

    NonterminalExpression(非终结符表达式):非终结符表达式也是抽象表达式的子类实现了文法中非终结符的解释操作,由于在非终结符表达式中可以包含终结符表达式。也可以继续包含非终结符表达式。

    Context(环境类):环境类又可以称为上下文类,它用于存储解释器之外的一些全局信息,通常它临时存储了需要解释的语句。

5、解释器模式的优缺点及使用场景
优点:

易于改变和扩展文法,由于在解释器模式中使用类表示语言的文法规则,因此可以通过继承等机制来改变和扩张文法。
每一条文法规则都可以表示为一个类,因此可以方便地实现每一个简单的语言。
实现文法比较容易。
缺点:

对于复杂文法难以维护,再解释模式下每一条规则至少定义一个类,因此如果太复杂无法处理。
执行效率低,由于大量使用了循环和递归。因此再解释很复杂的句子时速度很慢
使用场景:

可以将一个需要解释执行的语言中的句子表示为一个抽象树。
一些重复出现的问题可以用简单的语言进行表达。
执行效率不是关键问题。

// 说实话。。。这个模式是这多种设计模式里面。。唯一一个摸不着头脑的。所以代码都不贴了。其余的看例子都能看的明白。不过这个模式极少用到。。先略过吧。。

 

 

 



 

posted @   小羊小恩  阅读(124)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示