关闭

Android MVP模式简介

标签: androidmvp
208人阅读 评论(0) 收藏 举报
分类:

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

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:3228次
    • 积分:115
    • 等级:
    • 排名:千里之外
    • 原创:6篇
    • 转载:2篇
    • 译文:2篇
    • 评论:0条
    文章分类