美文网首页
关于mvp+Retrofit+RxJava总结疑惑

关于mvp+Retrofit+RxJava总结疑惑

作者: EasonDev | 来源:发表于2016-06-12 15:03 被阅读933次

    今天的文章没有源码。理论部份会比较多。
    关于mvp+Retrofit+RxJava 现在非常流行的一套组合。之前一直有使用在自己的demo中但是毕竟是demo。当把这一套用到实际项目的时候还是会遇到一些坑。

    感受(目前使用感受而非官方说法)

    • 复用性变强
    • 可维护性高
    • 代码更简洁(更多得益于retrofit和rxjava)
    • 调试与单元测试也更方便
    • 需要编写的类也更多

    首先我是参考官方给出的例子进行的编码。大致如下

    Paste_Image.png

    View(package)

    Paste_Image.png

    Base类当然是免不了的。官方使用是将view与presenter的接口写为内部类。这个和之前网上的一些例子不同(之前是将两个单独出来两个类)。内部类的好处不言而喻。在项目中生成的package和class也相应的少一半(实际生成还是两个class文件)

    UI(package)

    Paste_Image.png

    Presenter(package)

    Paste_Image.png

    V与P分别实现对应的接口。将V传入P中与之关联。当然还有就是无论MVP中哪个层都肯定肯定会有一个base类

    • M 通用的回调接口
    • V 通用的主题、帮助方法等根据业务需要
    • P 一些需要在ui销毁释放的实例 比如我这里就保存着subscription在ui销毁时对应自动释放

    Http(package)

    Paste_Image.png Paste_Image.png

    这方面就比较纯粹了和网上的例子都差不多主要的在okhttp的拦截器这里。我们一般都会在控制台打印一些网络方面的信息。使用HttpLoggingInterceptor这些基本都全了。常用信息都输出了。

    还有一个重点就是拦截器中下面这段代码。在每次请求中带上固定的一些参数。有些公司会在header头中有些会在body中等。在header头中好说。body中我当时还真找了半天找不到。 但是最终还是google出来了。

    Paste_Image.png Paste_Image.png

    上面有说复用性。这里只放这些代码似乎好像看不出来复用性的地方。
    举个栗子:有一个列表和对应的详情界面还个地方都有调用相同接口的地方。那么这时presenter肯定是写一遍两个界面用。
    因为之前是将activity传用presenter中。而activity实现的View都继承自baseView.于是方法中可以这么传入

    Paste_Image.png

    那么由哪个界面调用的自然会加回调给对应的activity中。有没有觉得很棒的。虽然一开始编码会多点。但带来的好处却是更多的。

    写在最后
    更新了一个小demo(好像大家看图还是不够直观) 虽然demo和截图没有关系。但逻辑写法完全一模一样(ps 公司的项目我怎么放出来 -- )
    https://github.com/EasonHolmes/MVP_Retrofit_Rxjava
    如果有问题请留言 我可是留言一定会回复的好博主~~~

    博主在找工作 位置 上海 请好主收下我的膝盖~~

    相关文章

      网友评论

          本文标题:关于mvp+Retrofit+RxJava总结疑惑

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