Android MVP 介绍
2016-03-12 22:17
337 查看
原文地址:
http://antonioleiva.com/mvp-android/#
MVP (Model View Presenter) 模式是广为人知的MVC(Model View Controller)模式的一种衍生品,在最近一段时间,它逐渐受到Android开发者的重视,越来越多的人开始谈论它。但是,网络上却缺少可靠和严谨的文章来介绍MVP这种新的模式,这就是我为什么要用这个博客来鼓励大家讨论,希望把所有的知识以最好的方式应用到我们项目中。
需要澄清的是,MVP模式不是一种架构模式,它只是负责展示层,但是在任何情况下,我们使用它会比不使用它要好。
为了增强一个程序的可扩展性和可维护性,我们需要定义一个良好的分层。哪一天,我们不再从数据库中获取数据,而是从网络接口中获取数据,我们是不是要重新修改整个View(这里View代表层级,指Activity,Fragment)。
MVP让View层和数据源保持独立,我们把应用的结构至少分成3层,分别单独的测试它们。MVP可以把大部分逻辑从Activity中分离出来,以至于我们可以用Java单元测试来测试它们而不使用instrumentation
MVP Demo on Github
http://antonioleiva.com/mvp-android/#
MVP (Model View Presenter) 模式是广为人知的MVC(Model View Controller)模式的一种衍生品,在最近一段时间,它逐渐受到Android开发者的重视,越来越多的人开始谈论它。但是,网络上却缺少可靠和严谨的文章来介绍MVP这种新的模式,这就是我为什么要用这个博客来鼓励大家讨论,希望把所有的知识以最好的方式应用到我们项目中。
什么是MVP
MVP模式把数据的展现从业务逻辑中分离出来,所以界面的工作和我们怎样展现数据是分离开的。MVP模式完美地支持在View不同的情况下,有着相同的业务逻辑。需要澄清的是,MVP模式不是一种架构模式,它只是负责展示层,但是在任何情况下,我们使用它会比不使用它要好。
为什么使用MVP
在Android开发中,经常遇到这样一个问题,Activity和界面交互,数据的获取机制都保持着高度耦合。我们可以找到一个例子:CursorAdapter,它混合着View层的组成部分-Adapter和获取数据相关-Cursor。为了增强一个程序的可扩展性和可维护性,我们需要定义一个良好的分层。哪一天,我们不再从数据库中获取数据,而是从网络接口中获取数据,我们是不是要重新修改整个View(这里View代表层级,指Activity,Fragment)。
MVP让View层和数据源保持独立,我们把应用的结构至少分成3层,分别单独的测试它们。MVP可以把大部分逻辑从Activity中分离出来,以至于我们可以用Java单元测试来测试它们而不使用instrumentation
如何实现MVP
MVP有很多种写法,每个人可以根据项目的具体需求去调整MVP的的写法。presenter
presenter 层的职责相当于View和Model的中间人,它从Model中获取数据,然后以某种格式交给View。和典型的MVC不同的是,MVP还决定了如何和View进行交互。view
view层通常会被Activity实现(也可能是Fragment,View,具体看项目设计),它持有presenter引用,每当用户触发事件(比如按钮点击)时,view会调用presenter中的一个方法。model
在一个结构良好的应用程序中,model只是作为业务逻辑的入口。MVP Demo on Github
相关文章推荐
- 使用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