观察者模式:
观察者模式定义了一种一对多的依赖关系,当一个对象改变状态时,它的所有依赖者都会受到通知,并自动更新。
注意: 观察者模式会造成内存泄漏,一定要记得取消订阅
uml关系图如下:
uml
观察者模式提供了一种对象设计,让主题和观察者之间松耦合。
观察者与主题之间依赖于接口,主题不需要知道观察者的具体实现
可以动态添加删除观察者,对主题没有任何影响
新增新类型的观察者对主题没有影响,主题的代码不需要修改,而且旧的观察者也不受影响
观察者与主题都可以独立复用,因为是松耦合
只要约定的接口不改变,修改主题或观察者任何一方,都不会影响另一方
代码实现
首先定义抽象的观察者:
定义被观察者:
定义具体的观察者
定义具体的被观察者:
书写测试类:
其实,如果大家做过android开发的话,android里面大量用了观察者模式,用textwatcher,eventbus等。