2012年9月30日
15:30
关键词:补充基础的uml术语 ,还有用过的观察者模式
设计模式二三话-10月份
理解设计模式-一个长期的过程-23=5+7+11 创建型+结构型+行为型
至今比较熟悉的有:
用过:单列模式 ,观察者模式, 适配器模式,。。
每次还是拿着那个图看吧:我想
这次就说观察者模式吧哈。
ljee说我没有理解观察者,
首先分清楚 3个uml 关系把:
一个 聚合(aggregation) ,一个合成(composition) ,前面两个箭头都有尾巴,并且合成尾巴是实心的,就如他的定义样,部分和整体的生命是一样的,注意是有生命的。
还有个关系叫做是 关联(association),在 观察者模式中就用到这个,代码上看起来就是一个成员变量罢了,在uml图上看起来就是一个箭头,没有尾巴。
定义:观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。
类图:
附:visio原图
特点:
1、观察者定义了对象之间一对多的关系;
2、主题(即被观察者)用一个共同的接口来更新观察者;
3、观察者和被观察者之间用松耦合方式结合,被观察者不知道观察者的细节,只知道观察者实现了观察者接口;
4、使用此方式是,可以从被观察者处推(push)或拉(pull)数据;
5、有多个观察者时,不可以依赖特定的通知次序。
适用之处:
各种需求引起的,对数据源(事件源)的监听,譬如button的onclick事件监听/触发、page的onload事件监听/触发等等;
在多个事件/数据/场景依赖某一事件/数据/场景变更,而触发自身的变更,也可以使用观察者模式。