书城计算机大话设计模式
11030400000061

第61章 2 观察者模式

大B:“你知道什么样的是属于观察者模式吗?”

小A:“是不是有观察者和被观察者的就是属于观察者模式?”

大B:“上面提到的放风者、偷窃者之间的关系就是观察者模式在现实中的活生生的例子。你现在知道什么是观察者模式了吧?”

小A:“嘿嘿!还不能完全理解。”

大B:“观察者模式又叫发布订阅模式。定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。”

大B:“当两个对象之间松耦合,它们依然可以交互,但是不太清楚彼此的细节,观察者模式提供了一种对象设计,让主题和观察者之间松耦合。”

小A:“为什么呢?”

大B:“1、关于观察者的一切,主题只知道观察者实现了某个接口,不需要知道观察者的具体类是谁。2、任何时候我们都可以增加新的观察者,因为主题唯一依赖的东西是一个实现Observer接口的对象列表。3、有新类型的观察者出现时,主题的代码不需要修改。只要在新类里实现观察者接口,然后注册为观察者即可。4、我们可以独立的复用主题或观察者,因为2者并非紧耦合。5、改变主题或观察者任何一方,并不会影响另一方,只要他们之间的接口人被遵守。”