Observable 是 RxSwift中的一个很重要的概念,俗称可被观察者,可以被别人观察的一个对象,那么我们来看看 Observable的继承关系类图
Observable Class Diagram
Observable.png首先分层实施的很彻底,每一层都只解决一件事情,一层层叠起来结构非常清晰
ObservableConvertibleType:顾名思义即可转换为Observable 类型协议,方法只有一个asObservable,这有什么好处呢?
- 用户不需要关注其具体是哪个类型对象
- 让用户更多的关注其核心功能
ObservableType:抽象方法subscribe,即我们常说的订阅,只有外部订阅了该对象,才能真正实现对该对象进行观察
Observable:真正的用户级别对象,对于用户来说Observable 的功能是完整的,因为它已经具备了所有的用户所需要的功能,尽管有些方法并没有得到实现仍是抽象方法
Producer: 实现subscribe 方法
AnonymousObservable: 实现run方法
事实上用户所使用的** Observable** ,都是 Producer 的子类和AnonymousObservable平行的子类,只不过用户不需要关心其具体实现罢了
每一个类似** AnonymousObservable的类,还有一个与之相关的类AnonymousObservableSink**,Sink即管道,所有这些组合起来才能让其真正运行起来。
整个设计向上通过组合协议的方式描述其特性,向下通过子类化的方式屏蔽其实现细节,类似于工厂模式,这样的类也可以叫类簇
网友评论