观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。
发布—订阅
在首篇导读中介绍了设计模式的分类,而观察者模式属于行为型模式,行为型模式关注的是对象之间的通讯,观察者模式就是观察者和被观察者之间的通讯。
观察者模式有一个别名叫“订阅—发布模式”。报纸大家都订过吧,当你订阅了一份报纸,每天都会有一份最新的报纸送到你手上,有多少人订阅报纸,报社就会发多少份报纸,这是典型的订阅—发布模式,报社和订报纸的客户就是上面文章开头所说的“一对多”的依赖关系。
观察者模式类图:
其实观察者模式也很简单,从上图可以看出观察者模式就两种角色,一是观察者,二是被观察者(主题),也可以认为是订阅者和发布者。
从逻辑上来说,观察者模式就是:当被观察者的状态改变了,就通知观察者,怎么通知呢?从类图中可以看到