设计模式---总结(行为型)

来源:互联网 发布:windows软盘版 编辑:程序博客网 时间:2024/05/13 09:30

7、中介者模式

定义:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
迪米特法则的典型应用。

理解:联合国与各个国家,联合国就是中介,将各个国家连接起来,使其耦合性降低。

区别:
外观模式:对一个对象子系统进行抽象,从而提供了一个为方便的接口,是单向的
中介者模式:协议是多向的,

8、迭代器模式

定义:提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节。
包括:容器和迭代器角色(来遍历聚合对象)

理解:公交车上面的售票员,公交车就是一个容器,售票员就是遍历对象的迭代者

9、解释器模式

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

理解:它用于定义一组文法规则并通过这组文法规则来解释语言中的句子。

10、命令模式

定义:将一个请求封装为一个对象,从而使我们可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。

理解:命令就好比菜谱,服务员只是来登记顾客点的什么菜,然后通知厨师去做

区别:封装的角度不同重点内容
都是某个对象发出消息,然后由中间对象通知观察者去做什么
观察者模式:封装的是要执行操作的对象
命令模式:将各个操作(命令)封装成类,然后告知某个对象该做什么

11、职责链模式

定义:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象练成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。

理解:职责链模式通过建立一条链来组织请求的处理者,请求将沿着链进行传递,请求发送者无须知道请求在何时、何处以及如何被处理,实现了请求发送者与处理者的解耦。

责任链模式其实就是一个灵活版的if…else…语句,它就是将这些判定条件的语句放到了各个处理类中。

联系:
跟状态模式一样,将复杂的逻辑判断,转移到各个子类然后由子类来进行简单判断。

区别:
状态模式是让各个状态对象自己知道其下一个处理的对象是谁,即在编译时便设定好了的;而职责链模式中的各个对象并不指定其下一个处理的对象到底是谁,只有在客户端才设定。

大话设计源代码

http://download.csdn.net/detail/tgbyn/9855078