在很多情况下,对象并不是孤立存在的,如在Java AWT/Swing编程中,单击一个按钮就会引发一个对话框的弹出。这样的实例在现实中很多。从中,可以分离出两大类角色,一类是观察者,如事件处理程序等,另一类是被这些观察者观察的目标,如按钮、文本框等。如果观察目标有某个动作发生,观察者就会有响应。与这一过程对应的模式就是观察者模式。流行的MVC架构中也应用了观察者模式。
观察者模式
观察者模式定义:定义对象间的一种一对多依赖关系,使得当每个对象状态发生改变时,其相关依赖对象都能得到通知并被自动更新。观察者模式又叫做发布/订阅模式、模型-视图模式、源-监听器模式、从属者模式。观察者模式属于一种对象行为型模式。
观察者模式包含的角色
(1)目标(Subject)
目标又被称为主题,它是被观察的对象。
(2)观察者(Observer)
在具体观察者中维护一个指向具体目标对象的引用,它存储具体观察者的有关状态,这些状态需要和具体目标的状态保持一致。