读书人

研磨设计方式 之 观察者模式(Observer

发布时间: 2012-11-08 08:48:11 作者: rapoo

研磨设计模式 之 观察者模式(Observer) 3——跟着cc学设计系列

12.3? 模式讲解

12.3.1? 认识观察者模式

(1)目标和观察者之间的关系

?????? 按照模式的定义,目标和观察者之间是典型的一对多的关系。

?????? 但是要注意,如果观察者只有一个,也是可以的,这样就变相实现了目标和观察者之间一对一的关系,这也使得在处理一个对象的状态变化会影响到另一个对象的时候,也可以考虑使用观察者模式。

?????? 同样的,一个观察者也可以观察多个目标,如果观察者为多个目标定义的通知更新方法都是update方法的话,这会带来麻烦,因为需要接收多个目标的通知,如果是一个update的方法,那就需要在方法内部区分,到底这个更新的通知来自于哪一个目标,不同的目标有不同的后续操作。

?????? 一般情况下,观察者应该为不同的观察者目标,定义不同的回调方法,这样实现最简单,不需要在update方法内部进行区分。

(2)单向依赖

?????? 在观察者模式中,观察者和目标是单向依赖的,只有观察者依赖于目标,而目标是不会依赖于观察者的。

?????? 它们之间联系的主动权掌握在目标手中,只有目标知道什么时候需要通知观察者,在整个过程中,观察者始终是被动的,被动的等待目标的通知,等待目标传值给它。

?????? 对目标而言,所有的观察者都是一样的,目标会一视同仁的对待。当然也可以通过在目标里面进行控制,实现有区别对待观察者,比如某些状态变化,只需要通知部分观察者,但那是属于稍微变形的用法了,不属于标准的、原始的观察者模式了。

(3)基本的实现说明

读书人网 >软件开发

热点推荐