sky-mxc总结 转载请注明:https://sky-mxc.github.io/2016/12/25/designModel-observer
观察者模式
观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听一个主题对象,当主题对象在状态上发生改变时,通知所有的观察者对象,并让他们自动更新自己;
观察者模式的组成
抽象主题角色:
将所有的观察者引用存放到一个集合中,每个主题可以拥有任意数量的观察者;主题提供一个接口,用来增加,移除通知观察者。一般用一个抽象类或接口来实现;
抽象观察者角色:
为所有的观察者定义一个接口,在得到主题通知时更新自己;
具体主题角色:
在具体主题状态发生改变时,通知所有登记过的观察者。具体主题通常由一个子类实现;
具体观察者角色:
该角色实现抽象观察者角色所要求的更新接口,在得到主题通知时更新自己,让本身的状态和观察者的状态相协调。通常是一个自类实现。如果需啊,可以在内部保存观察的主题的引用。
程序实现
抽象观察者角色
1 | /** |
抽象主题角色
1 | /** |
具体主题角色
1 | /** |
具体观察者角色
1 | /** |
运行
1 | public class Main { |