Head-First观察者模式-学习笔记

238 阅读1分钟

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

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

  • 观察者模式定义了对象之间一对多的关系。

  • 主题(也就是观察者)用一个共同的接口来更新观察者

  • 观察者和被观察者之间用松耦合(loosecoupling), 被观察者不知道观察者的细节,只知道观察者实现了观察者接口
    ps: 两个对象之间松耦合,它们依然可以交互,但是不太清除彼此的细节。
    因为对象之间的互相依赖降到了最低,松耦合的设计可以让我们建立有弹性的OO系统,应对变化

  • 使用观察者模式时,被观察者推送数据(push)给观察者,或者观察者从被观察者处拉取数据(pull);常见的方式为第一种

  • 有多个观察者时,不可以依赖特定的通知次序。

  • java有多种观察者模式的实现,包括java.util.Observable, Swing API 中 ;Swing 大量使用观察者模式,许多GUI框架也是如此

  • 此模式也被应用到许多地方:JavaBeans、RMI

设计原则

  • 找出程序中会变化的方面, 然后将其和固定不变的方面相互分离。
  • 针对接口编程,不针对实现编程
  • 多用组合少用继承, java.util.Obserable类违背了该原则。