Two 观察者 observer pattern

Two 观察者

定义

在对象之间定义一对多的依赖,当一个对象改变状态,依赖它的对象都会收到通知、并自动更新。

可以观察者自取,也可以主题去推送

其实就是设计两个接口。

相关原则

为交互对象之前的松耦合设计而努力  

找出并封装变化  

少用继承、多用组合  

针对接口编程、而非实现。

类图

手记

封装变化

封装主题的状态和观察者的数目和类型。

针对接口,不针对实现

观察者利用主题的接口向主题注册,主题利用观察者接口通知观察者;松耦合。

多用组合,少用继承

利用内部interface类型,将许多观察者组合进主题

Observer保存对Subject的引用时,取消注册比较方便。

出版者/主题+订阅者=观察者

实现方式多种,以包含Subject、Observer接口的类设计的做法最为常见。

类图:P52

松耦合的 两者之间依然可以交互,但是不太清楚彼此的细节-->我调你收我通知的方法,不掉用你具体做事情的方法。