android的mvp架构

android的mvp架构

顾名思义mvp是model-view-present的简称,这一套框架主要是为了解决随着应用功能的增加,view层的代码会变的越来越繁琐,而且view层若是直接来操作数据,那么对于单元测试,出现bug进行调整都是很困难的,为了解决这些方面的问题,mvp的设计模式就产生了。
1.MVP的model层相对于MVC是一样的,而activity和fragment不再是controller层,而是纯粹的view层,所有关于用户事件的转发全部交由presenter层处理。


image.png

mvp设计模式是很好了解的,关键在于代码实现,我在网上查看了不少源码实现,包括也看了谷歌官方提供的mvp设计例子,大体来说,本人看到的实现mvp的模式,网上基本采取两种模式,一种是基于dagger2+retrofit+rxjava的模式,这种模式在于应用dagger2依赖注入的方法,使得activity与present,present与model,这之间的耦合,解耦方便快捷。dagger2的用法,目前暂时先不介绍了,篇幅很大,而且功能很多。。。然后retrofit与rxjava,retrofit主要是网络通信使用,一般应用于model层,rxjava属于事件观察与订阅,两者一起使用可以大大缩减网络请求层的代码结构,具体实现也先不介绍,篇幅很大。
mvp的另外一种实现方式,使用的是泛型+反射的形式将各个层级耦合起来,这种方式实现起来比较简单,而且不同于dagger2的复杂,这种方式实现简单,但是缺点也是很明显的,反射是动态执行的,效率就会很低下,而且因为涉及到强转,可能会引发更多的异常,此种方式适合代码轻量级的mvp设计,若是类很多,还是推荐dagger2的依赖注入模式。
下面有个例子,是谷歌官方提供的mvp模板代码:
https://github.com/googlesamples/android-architecture
这里,由于mvp需要大量的接口回掉,谷歌官方实现方法是将view层与present层的接口写在一个类里面,方便修改:

image.png

而在数据model层,需要跟present进行交互处理,也是使用接口来回调,下面是model层的接口:


image.png

而对于接口的实现,都是通过dagger2在present层进行注入的


image.png

image.png

image.png

具体,这里面的依赖注入功能可能需要dagger2的相关知识,当前篇幅,就暂时不讲解了。
以上,差不多就是mvp的一种代码架构了。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,148评论 25 709
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 14,514评论 2 59
  • 原生框架问题 由于原生 Android 开发应该已经是一个基础的 MVC 框架,所以在初始开发的时候并没有遇到太多...
    LaxusJ阅读 6,243评论 0 51
  • 听说过偷钱,第一次知道竟然还有偷路的! 最近,江苏宿迁经开区的一条路上近800米的水泥路面竟然“不翼而飞”,好好的...
    写作的技巧阅读 1,499评论 0 0
  • js周期性定时器 js一次性定时器 替换背景 getComputedStyle获得内部样式 时间对象 Math对象...
    数据萌新阅读 2,875评论 0 0

友情链接更多精彩内容