设计模式11
2011-01-10 20:18
204 查看
22、 解释器模式
解释器模式(interpreter),给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。
a) 优点:
i. 用了解释器模式,就意味着可以很容易地改变和扩展文法,因为该模式使用类表示文法规则,你可使用继承来改变或扩展文法。也比较容易实现文法,因为定义抽象语法树中各个节点的类的实现大体类似,这些类都易于直接编写。
b) 缺点:
i. 解释器模式为文法中的每一条规则至少定义了一个类,因此包含许多规则的文法可能难以管理和维护。建议当文法非常复杂时,使用其他的技术如语法分析程序或编译器生成器来处理。
c) 解释器模式的应用:
i. 当有一个语言需要解释执行,并且你可将该语言中的句子表示为一个抽象语法树时,可使用解释器模式。
23、 访问者模式
访问者模式(Vistor),表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。
a) 优点:
i. 访问者模式把数据结构和作用于结构上的操作之间的耦合解脱开,使得操作集合可以相对自由地演化。
ii. 访问者模式增加新的操作很容易,因为增加新的操作就意味着增加一个新的访问者。访问者模式将有关的行为集中到一个访问者对象中。
b) 缺点:
i. 增加新的数据结构变得困难。
c) 访问者模式的应用:
i. 访问者模式适用于数据结构相对稳定的系统。
ii. 如果系统有比较稳定的数据结构,又有易于变化的算法的话,使用访问者模式就是比较适合的,因为访问者模式使得算法操作的增加变得容易。
解释器模式(interpreter),给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。
a) 优点:
i. 用了解释器模式,就意味着可以很容易地改变和扩展文法,因为该模式使用类表示文法规则,你可使用继承来改变或扩展文法。也比较容易实现文法,因为定义抽象语法树中各个节点的类的实现大体类似,这些类都易于直接编写。
b) 缺点:
i. 解释器模式为文法中的每一条规则至少定义了一个类,因此包含许多规则的文法可能难以管理和维护。建议当文法非常复杂时,使用其他的技术如语法分析程序或编译器生成器来处理。
c) 解释器模式的应用:
i. 当有一个语言需要解释执行,并且你可将该语言中的句子表示为一个抽象语法树时,可使用解释器模式。
23、 访问者模式
访问者模式(Vistor),表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。
a) 优点:
i. 访问者模式把数据结构和作用于结构上的操作之间的耦合解脱开,使得操作集合可以相对自由地演化。
ii. 访问者模式增加新的操作很容易,因为增加新的操作就意味着增加一个新的访问者。访问者模式将有关的行为集中到一个访问者对象中。
b) 缺点:
i. 增加新的数据结构变得困难。
c) 访问者模式的应用:
i. 访问者模式适用于数据结构相对稳定的系统。
ii. 如果系统有比较稳定的数据结构,又有易于变化的算法的话,使用访问者模式就是比较适合的,因为访问者模式使得算法操作的增加变得容易。
相关文章推荐
- RCP之病人信息系统开发总结(11):DAO模式设计
- 黑马程序员--Java学习11--设计模式
- JS常用的设计模式(11)—— 中介者模式
- 设计模式C++实现(11)——装饰模式
- 数据库设计模式(11)-通用设计模式
- 极速理解设计模式系列:11.单例模式(Singleton Pattern)
- 设计模式笔记11:模板方法设计模式(Template Method Pattern)
- 重学java23种设计模式(11)享元模式
- 【学习笔记javascript设计模式与开发实践(模板方法模式)----11】
- C语言和设计模式(代理模式)11
- 设计模式之结构型-享元模式(11)
- HeadFirst 设计模式 11代理模式
- 设计模式之11 - 享元模式FlyWeight
- 设计模式(11)--Mediator中介者模式&Observer观察者模式
- 设计模式笔记(11)---外观模式(结构型)
- 设计模式笔记(11 OBSERVER & STATE)
- 设计模式C++实现(11)——装饰模式
- 设计模式 (11) - 适配器模式
- 设计模式(11)-结构型模式-Flyweight模式
- 极速理解设计模式系列:11.单例模式(Singleton Pattern)