[Design] Observer Pattern
行为模式主要是责任和算法的抽象化。行为模式不仅仅是关于类和对象的,而且是关于它们之间的相互作用的。
行为模式分为类的行为模式和对象的行为模式两种。
类的行为模式
类的行为模式使用继承关系在几个类之间分配行为。
对象的行为模式
对象的行为模式则使用对象的聚合来分配行为。
--------------------------------------------------------
观察者模式
观察者模式对象的行为模式,又叫做发布-订阅模式(Publish/Subscribe)、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式。
观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们自动更新自己。
结构及角色
- 1、抽象主题(Subject)角色
主题把所有对观察者对象的引用保存到一个聚集里,每个主题都可以有任何数量的观察者。抽象主题提供一个接口,可以增加和删除观察者对象,主题角色又叫做抽象被观察者角色,一般由一个抽象类或接口实现。
- 2、抽象观察者(Observer)角色
为所有具体观察者定义一个接口,在得到主题的通知进更新自己。这个接口叫作更新接口。此角色一般由一个抽象类或接口实现。
- 3、具体主题(Concrete Subject)角色
将有关状态存入具体观察者对象,在具体主题的内部状态发生变化时,通知所有登记过的观察者对象。以叫做具体被观察者角色。一般由一个具体子类实现。
- 4、具体观察者(Concrete Observer)角色
存储与主题的状态自恰的状态。具体观察者角色实现抽象观察者所声明的更新接口,以便使本身状态与主题状态相协调。如果需要,可以保存一个指向具体主题对象的引用。一般由一个具体类来实现。