我的MVP架构的学习之旅

  • 阅读本文大概需要4min

关键字


ArchitectureMVPThe Clean Code

MVP hello World

前言


本文是本人对于Android MVP的架构的学习过程以及思考,没有具体的代码例子,不过我相信你看了肯定会有收获的。

思考


AndroidMVP的设计架构从接触到现在已经快有两年了,这些年一直与自己的糟糕的代码打交道,
从不规范的MVC——把大多数业务逻辑和界面展示写在Fragement/Activity里
到不规范的MVP——把数据与逻辑处理(M与P),以及逻辑处理与界面(P与V)代码区分的不清晰。
关于学习MVP的教程,百度Google一搜一大把,但是很多都是互相摘抄甚至是误导性错误理解。以下我将从MVP的介绍MVP资料学习MVP的思考三个方面进行总结,讲的不好欢迎交流想法、拍砖。

MVP介绍


M-V-P,分别是Model(数据管理层,包括远程服务器与本地缓存以及本地数据库等),Presenter(业务处理层,View与Model交互中介的身份,负责根据View中用户的交互来控制Model对数据的处理,然后展示到View中去),View(视图的展示层,只有有关界面操作的方法,不直接和Model交互)
典型的架构图

图片1来自Google Sample

还有最早 uncle bob这里提出的The Clean Architecture
图片2来自Google Sample

两者的差别,从图片上可以很直观的看到图片2在图片1的基础上多加了Domain Layer,在这一层主要职责就是对数据进行增删改查的一些操作,在这里很方便写测试用例,可以说图2是图1的升级版了。

MVP资料学习


  • 最直接的资料当然是Google官方提供的Demo了, android-architecture里面包含了基本的MVP架构,The Clean MVP 以及搭配流行框架RxJva 和Dragger2的各种版本,还有MVVM设计架构以及与MVP一样搭配流行框架的不同版本。最初的概念入门可以参考demo,避免走入误区。

  • 要想在项目中更真实的去接触,同时手上又没有可以入手的项目,学习别人的Sample是最好的方式。关于MVP架构的学习,比较流行的都会搭配一些流行框架,这样就免不了要学习Dragger 、RxJva、RxBus(也可以用RxJava实现)等一些流行框架的学习,你可以先简单了解一些这些开源库,然后在学习Demo遇到问题有针对性的学习,关于Sample的选择,我有几个亲测还不错的。

    • https://github.com/esoxjem/MovieGuide 这个Demo很简单,只有 列表展示和详情显示,代码采用The Clean MVP,包含Dragger2、RxJava,对于基本了解了Dragger2 和RxJva可以先参照这个例子
      Tips:例子的运行需要去这个地址去注册,然后申请API_KEY,最后按照README简单配置就可以了。

    • https://github.com/Rukey7/MvpApp这是一个比较完整的项目,代码量比较大,包含新闻,图片,视频。包含了Dragger2、RxJava,生命周期管理rxlifecycle,Tinker热修复,视频播放ijkPlayer,内存泄漏检查leakcanary等一些开源库,该Sample适合想把开源库结合到具体项目很有帮助

    • https://github.com/JessYanCoding/MVPArms一个你可以直接引入自己具体项目的MVP框架,作者对该框架进行了比较友好的封装,包括代码模板的快捷键,Token等一些公共变量,调试信息输出及错误的捕获,可以满足中小型项目的开发。这个框架的代码量也不少,设计上也不简单,需要花点时间学习。

MVP的思考


有关思考,我总结了两点

  1. 保证V不存在数据的全局变量
  2. 点击事件的处理放在P里,不要放在Adapter或者Fragment的V里面
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,908评论 25 708
  • 附上原文作者连接:作者:金诚 一.榜单介绍 排行榜包括四大类: 单一框架:仅提供路由、网络层、UI层、通信层或其他...
    这个美嘉不姓陈阅读 2,277评论 1 35
  • 框架:提供一定能力的小段程序 http://www.cnblogs.com/jincheng-yangchaofa...
    姑娘请别为难小僧阅读 7,318评论 0 132
  • 世上不只有熊孩子,也有熊父母。离婚了还不善罢甘休。 关键我还放不下,丢不掉,有时真想一了白了。
    红茉和莱玲阅读 259评论 0 0
  • 阿拉伯之夜 阿布扎比清真寺的 皇家密室里 投下一束清冷的月光 透过顶部的窗户 照在年青的 阿夏拉公主身上 美貌惊人...
    一叶茶阅读 216评论 0 2