拖了好久,才来弄明白RxJava
定义:RxJava是一个响应式框架。一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的库。
RxJava是基于观察者模式。
firstly,观察者模式是什么?
多个观察者对象同时监听同一个主题对象,当这个主题对象状态发生变化时,会通知所有观察者对象,使得他们能够自动更新自己。
观察者模式=订阅-发布(Publish-Subscribe)模式=模型-视图(model-view)模式=源-监听器(source-listener)模式=从属者模式=对象的行为模式
应用实例: 比如导演叫场控等演员切到下一场的时候就立马布置场景。当演员结束后,场控就立马跑出来大喊收拾东西,布置场景,那么此时场控就是一个观察者,他根据导演的命令观察演员的行为。
使用场景:1. 有多个子类共有的方法,且逻辑相同。 2。重要的、复杂的方法,可以考虑作为模板方法。
优点: 1、观察者和被观察者是抽象耦合(就是配套在一起的意思)的。 2、建立一套触发机制(trigger)。
缺点: 1、耗时。如果一个被观察者对象有很多的直接和间接的观察者的话,将所有的观察者都通知到会花费很多时间。 2、回路。如果在观察者和观察目标之间有循环依赖的话,观察目标会触发它们之间进行循环调用,可能导致系统崩溃。 3、观察者不知道怎么变化。观察者模式没有相应的机制让观察者知道所观察的目标对象是怎么发生变化的,而仅仅只是知道观察目标发生了变化。

ObservableEmitter有3种发射的方法,分别是void onNext(T value)、void onError(Throwable error)【注:Throwable是error类和Exception类的祖宗,Exception继承自Throwable】、void onComplete(),onNext方法可以无限调用,Observer(观察者)所有的都能接收到,onError和onComplete是互斥的,Observer(观察者)只能接收到一个,OnComplete可以重复调用,但是Observer(观察者)只会接收一次,而onError不可以重复调用,第二次调用就会报异常。
网友评论