黄河京都会议中心交通:Behavioral Patterns 行为模式总结

来源:百度文库 编辑:九乡新闻网 时间:2024/05/04 20:00:02

Behavioral Patterns 行为模式总结

分类: 设计模式 2009-07-09 14:55 98人阅读 评论(0) 收藏 举报

一、总体概念

 Behavioral Patterns  Chain of Resp.  A way of passing a request between a chain of objects  Command  Encapsulate a command request as an object  Interpreter  A way to include language elements in a program  Iterator  Sequentially access the elements of a collection  Mediator  Defines simplified communication between classes  Memento  Capture and restore an object's internal state  Observer  A way of notifying change to a number of classes  State  Alter an object's behavior when its state changes  Strategy  Encapsulates an algorithm inside a class  Template Method  Defer the exact steps of an algorithm to a subclass  Visitor  Defines a new operation to a class without change

行为模式关注的是程序运行时的对象通信和职责分配,跟踪动态的、复杂的控制流和消息流,比创建型模式和结构型模式更难于掌握。通常对象一旦创建,它们就立即联系起来,这种联系是动态的,很难甚至不可能从代码中看出来。行为模式以可文档化的形式描述对象通信机制,可以帮助我们深入了解对象之间的关系。行为模式大都采用对象组合,封装程序的可变部分。行为模式管理面向对象系统中对象的通信。

二、分类

根据其特性分成了三类:

1、将sender和receiver解藕的4种模式:

command模式:将调用某个命令的对象和执行命令的对象decouple,调用命令的对象完全不知道执行命令的对象以及执行的具体方式,只知道执行的接口(通过command的抽象  类的接口)。可以在运行时,改变调用的命令,只需要使用不同的命令对象
observer模式:又叫做publish-subscribe。在这个模式中,有多个observer(subscriber订阅者)订阅了某一个对象。也就是说,当这个对象发生改变时,要通知到所有  observer,维护observer数据的一致性。这个模式的好处时,可以随时增加或者删除observer(订阅者)。
mediator模式:所有对象之间的交互都要通过mediator来进行,各个对象之间不需要知道对方,只需要知道mediator。
式chain of responsibility: 将命令的sender和receiver进行decouple,使得request沿着sender一直传到receiver

2、封装:

找出变化并封装之。找出一些对象的不同之处,把这些不同之处作为抽象类的虚函数,也就是接口。如抽象类为A,实际类为A1和A2

优先使用对象聚集,而不是类继承。使用聚集来使用这些对象。如果B要使用A,则把A的一个指针作为其类成员,然后调用A的接口。这样,B在实现中不需要知道A调用的虚函数的方法到底是哪个,这是由运行时A的实际对象类型来决定的。

strategy模式:把各种不同的算法作为A
state模式:把各种不同的状态作为A

3、其他:

visitor:一个结构(一般是composite结构)中,每个子类都有针对这种子类的一系列操作,而这些操作经常发生变化,则需要整个类层次中的操作(函数)都发生改变。在这种 情况下,要使用visitor模式,使每一种操作都作为一个单独的类

template method:一种算法的步骤固定,但其中一些步骤实现决定于具体的子类。
memento:需要保存一个对象的状态,但又不希望暴露其接口,用memento对象来存储其状态,并在适当时候恢复其状态
iterator:遍历一个结构(composite结构)
interpreter:解析一种语言结构