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
什么是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
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories