HeadFirst设计模式读书笔记--观察者模式(1)(二)

认识观察者模式

我们看看报纸和杂志的订阅是怎么回事:

  • 报社的业务就是出版报纸
  • 向某家报社订阅报纸,只要他们有新报纸出版,就会给你送来。只要你是他们的订户,你就会一直收到新报纸。
  • 当你不想再看报纸的时候,取消订阅。他们就不会再送新报纸来。
  • 只要报社还在运营,就会一直有人(或单位)向他们订阅报纸或取消订阅报纸。

出版者+订阅者=观察者模式

如果你了解报纸的订阅是怎么回事,其实就知道观察者模式是怎么回事,只是名称不太一样:出版者改称为“主题”(Subject),订阅者改称为:“观察者”(Observer)。

定义观察者模式

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


HeadFirst设计模式读书笔记--观察者模式(1)(二)_第1张图片


一些问题的回答:

问:这和一对多的关系有何关联?

答:利用观察者模式,主题是具有状态的对象,并且可以控制这些状态。也就是说,有“一个”具有状态的主题。另一方面,观察者使用这些状态,虽然这些状态并不属于他们。有许多的观察者,依赖主题来告诉他们状态何时改变了。这就产生一个关系:“一个”主题对“多个”观察者的关系。

:其间的依赖是如何产生的?

:因为主题是真正拥有数据的人,观察者是主题的依赖者,在数据变化时更新,这样比起让许多对象控制同一份数据来,可以得到更干净的OO设计。

松耦合的威力

观察者模式提供了一种对象设计,让主题和观察者之间松耦合。

为什么呢?

关于观察者的一切,主题只知道观察者实现了某个接口(也就是Observer接口)。主题不需要知道观察者的具体类是谁、做了些什么或其他任何细节。

HeadFirst设计模式读书笔记--观察者模式(1)(二)_第2张图片

松耦合的设计之所以能让我们建立有弹性的OO系统,能够应对变化,是因为对象之间的互相依赖降到了最低。

版权声明:本文为博主原创文章,未经博主允许不得转载。

你可能感兴趣的:(HeadFirst设计模式读书笔记--观察者模式(1)(二))