美文网首页
RxJava的演进过程(一)

RxJava的演进过程(一)

作者: 郭海萍 | 来源:发表于2018-11-09 17:57 被阅读0次

    在用过Rxjava一段时间感触:
    1.切换线程很方便

    2.代码结构更清晰

    困惑:抛开切换线程不讲,它是怎么做到让代码结构变得清晰的呢,怎么封装的呢,针对代码优化而言,我即使不用Rxjava也不会怎么样吧...

    特别是读了大神这两篇文章后,这种感觉更强烈..

    1.Rxjava详解: 给 Android 开发者的 RxJava 详解

    2.Rxjava原理:IAM四十二:RxJava 是如何实现线程切换的(上) - 掘金

    文章讲得很棒!但是,矫情的说,我没有参与Rxjava的编写过程,了解了用法与原理,也始终不明白其内部的演进过程,我迫切需要一个简单的Demo来拯救我....

    外来的和尚会念经:

    NotRxJava懒人专用指南-RxJava的演进过程https://blog.csdn.net/oncealong/article/details/51753275?locationNum=16&fps=1

    这篇拯救了我,当做是看完文章后,自己重新临摹吧

    演进过程:

    1.需求:获取所有的猫咪图片,并找出最可爱的猫咪,保存后返回uri

    1.0版本诞生:

    通常做法

    需求更改:获取图片要从网络获取

    理解:

    1>获取数据:耗时操作,异步处理数据

    2>数据请求success后的处理

    3>数据请求onError后的处理

    1.1版本诞生:

    1.1版本

    需求变更:获取最可爱的猫咪后,uri要上传到服务器

    OK,和刚才同理

    1.2版本

    列出两个接口的具体方法,站在代码优化的角度,看出接下来的方向

    接口

    问题: 接口中都有onSuccess与onError的回调

    优化: 通用的接口类

    1.2版本诞生:

    接口调整 1.2版本

    代码优化: 是不是发现queryCats与store方法中,都有Callback参数,这个可不可以抽取出来呢??

    so,1.3版本诞生:

    1.3版本

    命名我用Rxjava中的命名形式,这样感觉更有代入感...

    有没有感觉有一点点Rxjava的影子了呢

    But:代码仍需优化

    1.整体的结构嵌套还是很严重

    2.业务代码明明只有queryCats(),findCutest(),store()这几行,可是第一眼看上去全是样板代码

    3.全是subscribe(),就不能调用一次吗??最后回调给我uri就可以了...

    首先拿findCutest()开刀:

    1.4版本 map具体实现

    做过这一系列操作后,呈现的就是刚才上面的形式,但是...还有嵌套...

    那么对猫咪进行保存flatMap方法,返回uri呢...同理...不做阐述,给各位看官当做作业了

    具体实现自行脑补(最后实现的形式)

    1.5版本

    最后这种形式是不是和当初最简单的三行代码是一致的呢 

    现在与Rxjava是不是大同小异了呢

    Rxjava的实现形式

    以上所有代码:https://github.com/guohaiping521/RxJavaDemo

    相关文章

      网友评论

          本文标题:RxJava的演进过程(一)

          本文链接:https://www.haomeiwen.com/subject/jlgmtqtx.html