我们可以用一个生活中的情景来认识一下观察者模式.
在这个时代,可能只有我们家里的老年人还保留着每天看报纸的习惯.报社负责生产内容,把它们组织到一张报纸上,每天进行印刷,然后送到每一个花钱订阅了报纸的用户家里.这样老人家就可以浏览一下每天发生的事情了.
这就是观察者模式最贴切的比喻.订阅者和报社是一对多的关系,每天只要更新了内容,就会统一把报纸送到用户的手里,当然,如果你不想订阅了,也可以退订.报社不知道你的状态,也不会关心你到底有没有看报纸,它的职责就是每天准时的把报纸送到你的家里.
下面是我看书的时候,总结的关于观察者模式的几个要点:
- 设计原则:为了交互对象之间的松耦合而努力.
- 定义了对象之间的一对多依赖,这样一来,当一个对象发生了改变时,它的所有依赖者都会受到通知并自动更新.
- 观察者模式提供了一种对象设计,让可观察者和观察者之间松耦合.
- 可观察者是有状态的
- 可观察者用一个共同的接口来更新观察者
- 可观察者不知道观察者的细节,只知道观察者实现了观察者接口
- 松耦合的设计之所以能让我们建立有弹性的OO系统,能够应对变化,是因为对象之间的互相依赖降到了最低.
- Java有内置的观察者模式,在Java.util包中的Observer接口和Observable类,可以使用推和拉两种方式
- 要认识到Java内置的观察者模式的局限性,因为Observer是一个类,而不是一个接口
- MVC模式是观察者模式的最佳代表
- 观察者模式也被应用于JavaBeans,RMI中.
时间: 2024-10-13 21:58:19