前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RxJava2.x 创建操作符之 create & just (打怪升级版)!!!

RxJava2.x 创建操作符之 create & just (打怪升级版)!!!

作者头像
程序员飞飞
发布2020-03-02 14:31:16
4950
发布2020-03-02 14:31:16
举报
文章被收录于专栏:Android&Java技术Android&Java技术

题图:来自网络

哈喽,朋友们,好久不见了,有段时间没推文了。从今天开始,我将计划更新 RxJava2.x 系列的文章,RxJava 是什么东西,我想也不用给大家介绍了吧。

其实,网上关于 RxJava 的相关文章一大堆,我之前也看过不少,对于新手来说,那些文章,要么就是比较长,不容易看下去,要么就是讲的全是理论,晦涩难懂,缺少实践性。

因此,我打算从今天开始,更新一系列的 RxJava2.x 教程,主要从常用的操作符讲起,目的很简单,带大家每天学会一个操作符的使用。

操作符是 RxJava 的重要组成部分,因此学习操作符也是非常重要的,RxJava 的操作符虽然说比较多,但是我们可以将其进行分类,然后逐一进行理解学习,其实也是比较容易和轻松的,RxJava 的操作符大致可以分为以下几类:

今天,我们先来学习两个简单的创建操作符 create & just。

在学习之前,我们先来回顾下观察者模式,大多数同学应该都不陌生吧,例如 Android 的EventBus 等框架都使用了观察者模式,简单说这就是一种发布、订阅的模式,你可以简单理解为订阅报纸。

这与 RxJava 又有什么关系呢?我们先来看下 Rx 的概念:Rx 是一个使用可观察数据流进行异步编程的编程接口,也就是说 RxJava 中使用了观察者模式的这种编程思想,另外还结合了迭代器模式和函数式编程,并把它运用发挥到了极致。

我们都知道观察者模式中,有 3 个重要的概念,被观察者,观察者和订阅,类比到现实中订阅报纸的场景中就是,报纸是被观察者,阅读报纸的人是观察者,人订阅了报纸也就是说使用订阅将他们两者关联起来,这样就形成了一种发布、订阅的关系。

举个例子吧,我们来看看 Android 中点击事件的处理,注意:观察者模式与点击回调模式有很多的相似处,简单对比就是:回调是一对一的关系,只监听一个事件;观察者模式则是一个主题,可以有多个监听者,当主题变化时,向部分或所有监听者发出变化的通知,观察者模式是一对多的关系。

上面的代码很简单吧,我相信大家都能看得懂,一般我们习惯上将监听器写成匿名的,这里我是为了给大家做类比,所以分开写了,然后我们再结合观察者模式看看上面的代码,第一步实例化一个 Button 就相当于是创建了一个被观察者,第二步初始化一个监听器就相当于是创建了一个观察者,第三步将监听器和 Button 绑定就相当于是把被观察者和观察者通过订阅将他们两者关联起来,是不是理解起来非常简单。

我们再来看看 RxJava 如何来实现,我们就先从最简单的 Hello World 学习起来吧,同样的还是三步走!

第一步,创建被观察者(Observable) 第二步,创建观察者(Observer) 第三步,将被观察者和观察者绑定(subscribe)

和上面的点击事件对比一下,是不是感觉有异曲同工之妙?但是我们习惯上一般不分开写,而是将方法的调用写成链式调用,将对对象写成匿名的对象,我们将上面的代码变换下,如下所示:

我们看到,在上面的创建被观察者的 subscribe 方法中,调用了 onNext 方法,将 “Hello World” 字符串传递下去,而在下面调用 subscribe 的时候,传递了一个 Consumer 对象(观察者),而这个 Consumer 的回调方法就会收到 onNext 的传递过来的值,接着,我们在下面打印了一下 onNext 传递过来的字符串。

实际上,subscribe(订阅)是一个重载方法,它可以接收 0-4 个参数,当传递一个参数时,就代表接收处理成功时的回调(onNext),如传递多个参数则代表接收处理错误、完成、当订阅完成时的事件处理,我们这里为了演示,就只处理成功事件就行了。

上面的代码看着还是不太完美,我们这里使用 just 操作符将它改造一下,just 是什么鬼?看着怎么一脸懵逼,好吧,那就让大飞哥来给你讲解下 just 操作符。

just 操作符和 create 操作符一样,也是创建操作符的一种,just 操作符是将一个或多个对象转换成发射这个或这些对象的一个 Observable,看完概念还是一脸懵逼怎么办?确实,这些概念是比较抽象的,其实,用起来特别简单,当你会用了之后,你再回过头去理解起来会容易很多。

来继续将我们的 Hello World 用 just 操作符改造一下:

怎么样,是不是更简单了,我们点开 just 方法,我们看到它接收的是一个 T,也就是说它可以接收任意类型的参数,我们以后就可以使用 just 操作符来很方便的创建各种被观察者对象了,非常棒!我们又学会了一个操作符,欧耶!

上面的代码看着还是有点长,我们可以用 Lambda 表达式改造一下看看:

哇哦!It’s beautiful! 一行代码就搞定了,有木有?

至此,我们今天的学习目标就算达成了,感觉是不是很简单,很轻松?

如果你学会了就赶紧动手去实践一下吧,实践是检验真理的唯一标准,眼过千遍不如手过一遍,代码是用来敲的不是用来看的,希望我们程序员都是实干家!

今天的内容确实比较轻松和简单,后面还有更大的挑战呢,从今天开始,大飞哥将带你一起打怪升级练本领,一起去闯关,去战斗!大家敬请期待吧!

最后,引用大飞哥的一句名言作为结尾吧:“是兄弟,就一起去战斗吧!”

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-05-18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档