设计模式二三话10月份

2012年9月30日

15:30

关键词:补充基础的uml术语 ,还有用过的观察者模式

设计模式二三话-10月份

理解设计模式-一个长期的过程-23=5+7+11 创建型+结构型+行为型

至今比较熟悉的有:

 

用过:单列模式 ,观察者模式,  适配器模式,。。

每次还是拿着那个图看吧:我想

 

 

这次就说观察者模式吧哈。

 

ljee说我没有理解观察者,

 

 

首先分清楚 3uml 关系把:

 

一个 聚合(aggregation) ,一个合成(composition ,前面两个箭头都有尾巴,并且合成尾巴是实心的,就如他的定义样,部分和整体的生命是一样的,注意是有生命的。

 

还有个关系叫做是 关联(association),在 观察者模式中就用到这个,代码上看起来就是一个成员变量罢了,在uml图上看起来就是一个箭头,没有尾巴。

clip_image001

clip_image002

clip_image003

 

 

 

定义:观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新


类图:

clip_image001

附:visio原图


特点:

1、观察者定义了对象之间一对多的关系

2、主题(即被观察者)用一个共同的接口来更新观察者;

 

3、观察者和被观察者之间用松耦合方式结合,被观察者不知道观察者的细节,只知道观察者实现了观察者接口;

4、使用此方式是,可以从被观察者处推(push)或拉(pull)数据

5、有多个观察者时,不可以依赖特定的通知次序。


适用之处:

各种需求引起的,对数据源(事件源)的监听,譬如button的onclick事件监听/触发、page的onload事件监听/触发等等;

在多个事件/数据/场景依赖某一事件/数据/场景变更,而触发自身的变更,也可以使用观察者模式。

 

源文档 <http://www.haogongju.net/art/592723>

原文地址:https://www.cnblogs.com/titer1/p/2711574.html