Observable作为入口类,包装了所有的操作功能。静态方法基本都是create方法

而所有的操作:map flatmap filter等等都通过包装模式实现。都继承自AbstractObservableWithUpstream。其内部通过protected final ObservableSource<T>

source对目标ObservableSource保持引用。

rxjava设计解读


图一 继承关系图

子类都通过如下方法:

public void subscribeActual(Observer t) {

source.subscribe(new MapObserver(t, function));

}

去创建一个继承了Observer的包装了,将传入的Observer进行包装,增加自定义功能。然后依然使用source.subscribe进行订阅;只是此时的Observer已经是被增强了的,比如过滤所有的onNext 将传入到值进行改变(map),进行过滤(filter)等等。


以下是深入源代码解读:

rxjava设计解读
图1 包装讲解




rxjava设计解读
图2





rxjava设计解读
图3 线程执行示意图







rxjava设计解读
图4 总结

相关文章:

  • 2021-04-12
  • 2021-11-06
  • 2021-10-18
  • 2022-01-17
  • 2021-10-07
  • 2021-11-29
  • 2021-07-14
  • 2021-06-30
猜你喜欢
  • 2021-09-23
  • 2021-11-11
  • 2021-06-25
  • 2021-10-11
  • 2021-11-30
  • 2022-02-27
  • 2022-01-14
相关资源
相似解决方案