【原创】ReactiveX之基础思路被观察者和观察者 (RxJava为例子)

 

本文介绍了ReactiveX到底用什么样的思维来解决异步编程的问题。...



首先现在我们来认识下ReactiveX是什么。ReactiveX是一个使用观察流的异步编程接口API,它的官方网址为:http://reactivex.io/

【官方大标题图】
上图中官方给出的说明是一个种基于观察者流的异步编程接口API,不光如此还可以看到可以选择多个平台其中包括RxJava、RxAndroid、RxSwift、RxJS、RxScala、RxCpp、RxClojure、RxPHP等等,这就说明这个异步框架还是值得一学的,也从另外一个角度发现,这个异步框架想要描述一个颠覆传统的编程思维。像Android Framework里面其实有AsyncTask和Handler这样的库也是异步处理机制。我们慢慢看看ReactiveX到底用什么样的思维来解决异步编程的问题。

ReactiveX结合了观察者模式、迭代器模式和函数式编程,既然是提供给我们使用的异步框架那么自然在设计上一定是容易上手,并且简单易用,如果要研究这个框架的运作机制,那么观察者模式、迭代器模式和函数式编程需要有一个透彻的掌握。后续的文章也将会带着大家来研究研究,今天的文章以RxJava为例子带领大家一起感受下ReactiveX的玩法。除此之外ReactiveX也是可以使用在不同的地方(官方广告:ReactiveX is everywhere, and it's meant for everything.【ReactiveX无处不在,它意味着一切。】哈哈这吹的我给101分。

【官方吹水图】
【官方吹水图】
【官方吹水图】
总之一句话,异步操作利器、跨语法平台的框架。


RxJava的使用



首先要到https://github.com/ReactiveX/RxJava去获取并且编译,因为github上面使用的是Gradle构建的工程,如果不会的话可以直接百度去下载rxjava-1.1.1.jar包也可以。


本例使用的是Eclipse和rxjava-1.1.1.jar包

【项目结构图】

一个hello world例子。我们先看看代码以及完整的四个基本步骤。

1.
创建订阅事件对象【OnSubscribe对象】



2.
创建被观察者对象【Observable对象它决定什么时候触发事件以及触发怎样的事件】(这里如果不知道观察者对象和被观察者对象可以看看观察者模式。例如:【这里使用LOL来举例】我是莫甘娜辅助我朋友是ADC,我和我朋友说我放Q技能之后,你就给我开大,这个时候我就是被观察者,我朋友就是观察者,理解起来很简单,我放完了Q我会通知我朋友,我朋友接到通知后就会放大招。被观察者是订阅事件的通知者,观察者是接到被观察者通知之后有怎么样的反应。)



3.
创建观察者对象【Observer 即观察者,它决定事件触发的时候将有怎样的行为。这里的Subscriber是Observer的子类,Subscriber只是在Observer基础上添加了一些功能,并且还实现了Subscription接口】



4.
执行被观察者对象的订阅行为,创建了 Observable【被观察者对象】 和 Observer【观察者】 之后,再用 被观察者的subscribe() 方法将被观察者和观察者依赖在一起,这样整个框架的基本骨架就有了。写起来也比较简单




总结上述四个流程,当然注意依赖关系先有谁后有谁的关系比较重要,因此上述代码没有写出匿名类部类的写法。并且这里的单词也是很扯蛋的(Observable被观察者、Observer、Subscriber观察者、OnSubscribe订阅事件、被观察者对象的subscribe()方法是开始订阅方法)。从最后的开始订阅来看代码为:mObservable.subscribe(mSubscriber),你会发现【被观察者(报纸)订阅观察者(人)】这是和实际情况正好是反的,应该是mSubscriber.subscribe(mObservable);这样才对。之所以ReactiveX这样设计是为了API的一个设计的考虑。


第一步创建订阅事件【也就是被观察者需要通知观察者的数据流】使用的是Observable.OnSubscribe接口,然后重写call方法,然后在call方法里面使用局部对象Subscriber


    关注 优才网


微信扫一扫关注公众号

0 个评论

要回复文章请先登录注册