您的位置:首页 > 移动开发 > Android开发

Android MVP模式简介

2016-06-01 21:48 260 查看
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模式的不同在于:

MVP模式中 View不直接与Model交互,而是通过Presenter来与Model间接交互。但是在MVC模式中View可以和Model直接交互。

MVP模式中通常VIew与Presenter是一对一的关系,而MVC模式中Controller可以被多个View共享。

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