Android MVP模式简介

原创 2016年06月01日 21:48:03

MVP模式现在已经被应用很多了。那么什么才是MVP呢?这篇文章就介绍了MVP模式的相关内容以及本人基于自己的理解写了一个小Demo http://github.com/Ti2Yuan/androidMvpDemo,如果有什么不对的地方也请读者能指出,谢谢!共同交流嘛!


什么是MVP模式?

Android MVP(Model View Presenter)模式是著名的MVC(Model View Controller)模式的衍生物,通常包含4个要素:
(1)View:负责绘制UI元素、与用户进行交互(在Android中体现为Activity);
(2)View interface:需要View实现的接口,View通过View interface与Presenter进行交互,降低耦合,方便进行单元测试;
(3)Model:负责存储、检索、操纵数据(有时也实现一个Model interface用来降低耦合);
(4)Presenter:作为View与Model交互的中间纽带,处理与用户交互的负责逻辑。

MVP模式就是为了更好细分视图(View)与模型(Model)的功能,让View专注于处理可视化界面,与用户交互,同时让Model也只专注于处理数据的处理。它与MVC模式的不同在于:

  1. MVP模式中 View不直接与Model交互,而是通过Presenter来与Model间接交互。但是在MVC模式中View可以和Model直接交互。
  2. MVP模式中通常VIew与Presenter是一对一的关系,而MVC模式中Controller可以被多个View共享。
  3. MVP模式中Presenter与View的交互是通过接口来进行的,更有利于添加单元测试。

那为什么要使用MVP模式呢?

在Android开发中,我们经常会遇到一种情况,就是activity里面集中了UI界面的交互与数据显示,还有相关的数据处理机制,显得相当繁杂,可读性非常差。这个问题在当项目越来越大的时候越发突出,令人烦恼。那么为了开发出一个扩展性、稳定性良好的APP,我们就必须定义分离层。而MVP模式使得View和我们的数据源独立。我们将应用分为三个层次,每个层次都可以独立测试。

模式的优点:
(1)降低耦合度
(2)模块职责划分明显
(3)利于测试驱动开发
(4)代码复用
(5)隐藏数据
(6)代码灵活性


如何去实现MVP模式呢?也许每个人对它的实现都有点差异,以下是我参考http://antonioleiva.com/mvp-android/之后的一点想法。

Presenter层:负责连接View和Model两个层次,从Model检索数据然后返回到View层用于显示。但也可以基于用户与界面的交互决定改如何显示。

View层:通常可以使一个Activity或者Fragment,包含Presenter层的一个引用,每次用户与View存在交互,View层就会调用Presenter的方法进行处理。

Model层:与Presenter层交互,存储、检索、操纵数据,也就是我们想要显示在UI界面的数据提供者。


总结
在Android开发中,从逻辑上分离接口不是容易的,但是MVP模式却使得,预防我们的Activity里面代码成堆这个难题,变得简单。在大项目中,这个模式显得更加重要。否则,维护和扩展将会极其艰难。


本文参考
http://blog.csdn.net/vector_yi/article/details/24719873
http://antonioleiva.com/mvp-android/

最后附上本人的一个小案例。http://github.com/Ti2Yuan/androidMvpDemo

版权声明:本文为博主原创文章,未经博主允许不得转载。

Android中使用MVP模式简介

本文原文地址:http://www.race604.com/android-mvp/ 经常在各种地方看到有人提到MVP,在Android的开发中MVP模式越来越流行,我这里也学习和总结一下MVP模式。...
  • race604
  • race604
  • 2014年12月25日 13:02
  • 7191

浅谈安卓MVP模式

对于MVP(Model View Presenter),大多数人都能说出一二:“MVC的演化版本”,“让Model和View完全解耦”等等。本篇博文通过对google官方demo:https://gi...
  • dfskhgalshgkajghljgh
  • dfskhgalshgkajghljgh
  • 2016年05月04日 20:42
  • 4756

Android开发MVP模式解析

在开发Android应用时,相信很多同学遇到和我一样的情况,虽然项目刚开始构架时一个Activity里面...
  • guxiao1201
  • guxiao1201
  • 2014年10月16日 13:57
  • 20669

android中MVP模式(一)

1. 明确需求,界面如下:可存,可根据id读取数据。
  • knxw0001
  • knxw0001
  • 2014年09月28日 09:41
  • 142577

Android中MVP模式讲解及实践

前两年的时候,我经常逛http://androidweekly.net这个网站,上面就有过很多文章介绍MVP模式,我很感兴趣,于是把这个东西介绍给身边的同事,同事们好像没有多大反应,可能是当时在国内M...
  • briblue
  • briblue
  • 2016年10月17日 15:44
  • 4904

Android一个mvp模式的小例子

MVP模式的是什么就不说了,反正用MVP模式写多了就是感觉爽多了,特别是后期改代码、维护什么的就不用那么麻烦了。这边文章就用登录的例子来写一个小小的mvp例子。 布局文件很简单,两个编辑框和一个按钮...
  • koma025
  • koma025
  • 2016年10月20日 15:12
  • 1135

Android MVP模式的坑

MVP 坑
  • brycegao321
  • brycegao321
  • 2016年08月09日 15:19
  • 2460

Android中的MVP模式使用

在讲MVP 之前,我们先来简单说下什么是MVC, 即Model(模型)、View(视图)、Control(控制器),相信大家对于MVC模式早已耳熟能详。原理性的东西这里不再多说。MVC在Android...
  • soul_code
  • soul_code
  • 2015年12月07日 16:50
  • 4764

Android开发MVP模式实践

现在用一个基于MVP模式的APP项目进一步分析MVP的实际ying
  • guxiao1201
  • guxiao1201
  • 2014年10月16日 17:14
  • 24428

Android 之MVP模式

前言:如果童鞋对于接口回调,多态,泛型(这个很重要)不是特别熟练,或者不是特别了解,建议还是不要使用这种模式。先谢谢常规MVP练练手,等真正对这些知识能熟练掌握了再来学习MVP模式。这个架构用到了大量...
  • sunxiaogang0214
  • sunxiaogang0214
  • 2017年02月07日 18:47
  • 431
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android MVP模式简介
举报原因:
原因补充:

(最多只允许输入30个字)