报纸与杂志的订阅
- 向报社订阅了报纸,一旦有新报纸出来,他们就会主动送报到门;
- 如果不想看了,取消报纸订阅,就不会送报了;
- 只要报社一直在运营,就会不断有人定或取消报纸定制,报社也一直会向订报方发送报纸;
** 出版社 + 订阅者 = 观察者模式 **
在观察者模式中,出版社叫做“主题”(Subject),订阅者改称为“观察者”(Observer)。
观察者模式定义了对象之间的一对多依恋,当主题对象改变时,它的所有依恋着都会受到通知,并自动更新;
观察者模式提供一种对象设计、让主题与观察者之间松耦合;
** 类图 **
** 主题与观察者之间的数据传递 **
当主题对象发生数据改变时,会主动通知所有观察者,将数据“推 push”给所有观察者; 当前主题也可以添加一些公开的 getter 方法,也就是 “拉 pull”,用以观察者来获取自己感兴趣的数据;
在JDK内置的观察者模式框架中,2种方式都支持;jdk中的主题,是个抽象类;