Two 观察者
定义
在对象之间定义一对多的依赖,当一个对象改变状态,依赖它的对象都会收到通知、并自动更新。
可以观察者自取,也可以主题去推送
其实就是设计两个接口。
相关原则
为交互对象之前的松耦合设计而努力
找出并封装变化
少用继承、多用组合
针对接口编程、而非实现。
类图
手记
封装变化
封装主题的状态和观察者的数目和类型。
针对接口,不针对实现
观察者利用主题的接口向主题注册,主题利用观察者接口通知观察者;松耦合。
多用组合,少用继承
利用内部interface类型,将许多观察者组合进主题
Observer保存对Subject的引用时,取消注册比较方便。
出版者/主题+订阅者=观察者
实现方式多种,以包含Subject、Observer接口的类设计的做法最为常见。
类图:P52
松耦合的 两者之间依然可以交互,但是不太清楚彼此的细节-->我调你收我通知的方法,不掉用你具体做事情的方法。