目的 | 该模式针对的是对象间的一对多的依赖关系,当被依赖对象状态发生改变时,就会通知并更新所有依赖它的对象 |
应用场景 | 对象改变的同时需要通知其他的对象。比如微信公众号与订阅公众号的用户,这里关系比较适合观察者模式 |
构成 | 抽象主题、具体主题、抽象观察者、具体观察者 |
备注 | 该模式又被称为发布——订阅模式,这个定义能更好地帮助理解 |
观察者模式由抽象主题、具体主题、抽象观察者、具体观察者等组成。
(1)抽象主题:将全体观察者对象的引用存入至某一个列表中,提供某一接口用于添加或删除观察者对象。
(2)具体主题:实现抽象主题中的通知方法,当具体主题的内部状态发生改变时,通知所有注册的观察者对象
(3)抽象观察者:定义某一类接口,让全体具体观察者,获取更新通知
(4)具体观察者:抽象观察者的实现,以便在得到目标的更改通知时更新自身的状态。