最近在学习的网络框架搭建,在网上看了不少的博客,有着各种各样的封装思路,看的实在是激情四射,乘热打铁,赶紧把学到的知识记录下,下面正式开始
关于rxjava,retrofit,okhttp,网上有大量的文章,这里就不做概述,主要是想来谈谈mvp
MVC
何为MVP,相信大家都能说得出一二,灵活,方便维护,解耦等,在说MVP之前,先来说说MVC
通常我们在开发项目之中,开始之初项目还小,所以使用mvc框架反而更轻松,但是随着项目不断迭代,变大很大,这时候mvc反而让代码难以维护,所以为了项目以后着想,mvc这种设计模式已经不太适合去开发,这里引用stormzhang一篇文章,里面对mvc有着详细的介绍:http://mp.weixin.qq.com/s/GuO5wdo2rJgvHH6mErLgqw
MVP
mvp是在mvc的基础上进行演化而来,它分离了view层和model层,中间通过presenter来进行通信,也就是说各层做各层的事情,互不干扰,最后通过中间人去传递,这样就大大的提高的代码的可读性以及维护性,但相对而言,就需要写很多的类和方法,所以说,如果项目不大,并且迭代不多的情况下,可以考虑用mvc,反之就mvp吧,当然也可以用mvvm,clean,下面开始正文
我们基于mvp模式去设计的,所以我们得创建mvp用到的东西,先看项目结构
并不多,bean目录主要是存放我们的实体类,model主要是需要做的方法,net就是网络的一些设置,presenter就是桥梁,service就是rxjava的接口,util是些用到的工具类,view则是展示给用户,好了有了这些怎么去实现?
其实就是根据之前的封装而改的,可以参考下我前篇文章《基于RxJava和Retrofit的二次封装》http://www.jianshu.com/p/4b7517d497dd
味道还是那个味道,只是请求的方式不太一样而已
model
可以看到,我们把之前请求数据的类变成了model层,这层主要是跟网络打交道
presenter
这层是链接了model和view层,用户处理事件时,直接调用doLogin方法,得到结果之后,就回调view来展示给用户
view
Activity
总体的就是这样,项目已经上传github,有兴趣的可以下载来看看
https://github.com/ReturnYhh/Rxjava-Retrofit-okhttp-mvp