文章目录
-
- 定义
- 类结构
- 应用
- 总结
定义
实现响应式编程的代码设计,即触发事件或数据变化时,将数据从被观察者类通过观察器传递给观察者处理,即被观察者类间接调用观察者类的方法处理事件或数据
类结构
被观察者类、观察器类、观察者类
被观察者类依赖观察器类,依赖方式是持有观察器类的实例对象,通过定义注册方法将观察器传入被观察者类
观察器类依赖观察者类,依赖方式是内部类直接持有外部类的实例对象,两种方式
1.观察器类是被观察者类的内部类,这样观察器类直接持有外部类的实例对象,可直接调用观察者类的方法
2.观察器类是独立的类,但在观察者类中,创建观察器类的实例对象时先创建继承观察器类的匿名内部类
被观察者类和观察者类虽然不是直接依赖,但是通过观察器类作为中介者,实现间接依赖,可以看作中介者模式的扩展
应用
java.util中的Observable和Observer
Observable类
持有一个Vector<Observer>对象,定义并实现相关方法addObserver(Observer)、deleteObserver(Observer)、notifObservers()方法
Observer接口
定义方法update(Observable, Object)
使用
在观察者类中创建Observer接口的实例对象,即创建实现Observer接口且作为观察者类的内部类的实例对象,这样可以直接调用
RxJava中的观察者模式
Observable、OnSubscribe、Observer
Flowable、FlowableOnSubscribe、Subscriber
Observable和Flowable是观察者模式中的被观察者,触发事件或获取数据后,发送事件或数据
Observer和Subscriber是观察者模式中的观察者,获取最终的结果
OnSubscribe、FlowableOnSubscribe是观察者模式中的观察器,负责作为中介者,完成被观察者与观察者之间的数据传递