rxjava设计解读
Observable作为入口类,包装了所有的操作功能。静态方法基本都是create方法
而所有的操作:map flatmap filter等等都通过包装模式实现。都继承自AbstractObservableWithUpstream。其内部通过protected final ObservableSource<T>
source对目标ObservableSource保持引用。
图一 继承关系图
子类都通过如下方法:
public void subscribeActual(Observer t) {
source.subscribe(new MapObserver(t, function));
}
去创建一个继承了Observer的包装了,将传入的Observer进行包装,增加自定义功能。然后依然使用source.subscribe进行订阅;只是此时的Observer已经是被增强了的,比如过滤所有的onNext 将传入到值进行改变(map),进行过滤(filter)等等。
以下是深入源代码解读: