读书人

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

发布时间: 2012-11-19 10:18:51 作者: rapoo

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

?

12.2? 解决方案

12.2.1? 观察者模式来解决

用来解决上述问题的一个合理的解决方案就是观察者模式。那么什么是观察者模式呢?

(1)观察者模式定义

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

(2)应用观察者模式来解决的思路

在前面描述的订阅报纸的例子里面,对于报社来说,在一开始,它并不清楚究竟有多少个订阅者会来订阅报纸,因此,报社需要维护一个订阅者的列表,这样当报社出版报纸的时候,才能够把报纸发放到所有的订阅者手中。对于订阅者来说,订阅者也就是看报的读者,多个订阅者会订阅同一份报纸。

这就出现了一个典型的一对多的对象关系,一个报纸对象,会有多个订阅者对象来订阅;当报纸出版的时候,也就是报纸对象改变的时候,需要通知所有的订阅者对象。那么怎么来建立并维护这样的关系呢?

观察者模式可以处理这种问题,观察者模式把这多个订阅者称为观察者:Observer,多个观察者观察的对象被称为目标:Subject。

一个目标可以有任意多个观察者对象,一旦目标的状态发生了改变,所有注册的观察者都会得到通知,然后各个观察者会对通知作出相应的响应,执行相应的业务功能处理,并使自己的状态和目标对象的状态保持一致。

12.2.2? 模式结构和说明

观察者模式结构如图12.3所示:

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

图12.3? 观察者模式结构示意图

Subject

目标对象,通常具有如下功能:

读书人网 >软件开发

热点推荐