观察者模式的基础原理
观察者模式是常用的设计模式之一,是所有 Java 工程师必须掌握的设计模式。观察者模式也叫发布订阅模式。
此模式的角色中有一个可观察的主题对象 Subject,有多个观察者 Observer 去关注它。当 Subject 的状态发生变化时,会自动通知这些 Observer 订阅者,令 Observer 做出响应。
在整个观察者模式中一共有 4 个角色:Subject(抽象主题、抽象被观察者)、Concrete Subject(具体主题、具体被观察者)、Observer(抽象观察者)以及 ConcreteObserver(具体观察者)。
观察者模式的 4 个角色以及它们之间的关系如图所示。
观察者模式中 4 个角色的介绍如下:
Subject(抽象主题):Subject 抽象主题的主要职责之一为维护 Observer 观察者对象的集合,集合里的所有观察者都订阅过该主题。Subject 抽象主题负责提供一些接口,可以增加、删除和更新观察者对象。
ConcreteSubject(具体主题):ConcreteSubject 用于保持主题的状态,并且在主题的状态发生变化时给所有注册过的观察者发出通知。具体来说,ConcreteSubject 需要调用 Subject(抽象主题)基类的通知方法给所有注册过的观察者发出通知。
Observer(抽象观察者):观察者的抽象类定义更新接口,使得被观察者可以在收到主题通知的时候更新自己的状态。
ConcreteObserver(具体观察者):实现抽象观察者 Observer 所定义的更新接口,以便在收到主题的通知时完成自己状态的真正更新。
RxJava 的操作符实质上是为了方便数据流的操作,是 RxJava 为 Observable 主题所定义的一系列函数。RxJava 的操作符按照其作用具体可以分为以下几类:
创建型操作符:创建一个可观察对象 Observable 主题对象,并根据输入参数弹射数据。
过滤型操作符:从 Observable 弹射的消息流中过滤出满足条件的消息。
转换型操作符:对 Observable 弹射的消息执行转换操作。
聚合型操作符:对 Observable 弹射的消息流进行聚合操作,比如统计数量等。
版权声明: 本文为 InfoQ 作者【阿泽🧸】的原创文章。
原文链接:【http://xie.infoq.cn/article/bfad92f78f974f712f25c4c63】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论