正文
观察上图,其实已经很明了了,不过需要指出一下几点(
对于下面理解RxJava很重要
):
-
开关(被观察者)作为事件的产生方(生产“开”和“关”这两个事件),是主动的,是整个开灯事理流程的起点。
-
台灯(观察者)作为事件的处理方(处理“灯亮”和“灯灭”这两个事件),是被动的,是整个开灯事件流程的终点。
-
在起点和终点之间,即事件传递的过程中是可以被加工,过滤,转换,合并等等方式处理的(上图没有体现,后面对会讲到)。
我必须苦口婆心的告诉你:我们总结的这三点对于我们理解RxJava非常重要。因为上述三条分别对应了RxJava中被观察者(Observable),观察者(Observer)和操作符的职能。而
观察者模式又是RxJava程序运行的骨架
。
好了,我假设你已经完全理解了我上面讲述的东西。我们正式进入RxJava!
RxJava也是基于观察者模式来组建自己的程序逻辑的,就是构建
被观察者(Observable),观察者(Observer/Subscriber)
,然后建立二者的订阅关系(就像那根电线,连接起台灯和开关)实现
观察
,在事件传递过程中还可以
对事件做各种处理
。
Tips:
Observer是观察者的接口, Subscriber是实现这个接口的抽象类,因此两个类都可以被当做观察者,由于Subscriber在Observe的基础上做了一些拓展,加入了新的方法,一般会更加倾向于使用Subscriber。
这是最正宗的写法,创建了一个开关类,产生了五个事件,分别是:开,关,开,开,结束。
Observable switcher=Observable.just("On","Off","On","On");
String [] kk={"On","Off","On","On"};
Observable switcher=Observable.from(kk);
偷懒模式是一种简便的写法,实际上也都是
被观察者
把那些信息"On","Off","On","On",包装成onNext("On")这样的事件依次发给
观察者
,当然,它自己补上了onComplete()事件。
以上是最常用到的创建方式,好了,我们就创建了一个开关类。