MVP 模式在 Android 中的使用

简介:
什么是MVP

作为码农你应该知道MVC(Model View Control)吧,如果不知道,请自行补脑。MVP(Model View Presenter)是MVC衍生而来的,MVP并不是一个新玩意,很早以前就由某软公司提出,近年来在Android应用开发中越来越多的被提及,越来越重要了。本文简单解介绍MVP的概念、为啥要使用MVP和在Android中如何使用,最后介绍一个Android使用MVP的例子。


概念

MVP,即 Model View Presenter,包含逻辑、视图、presenter(作为视图和逻辑的中间层,暂时找不到一个合适的词来翻译)三个部分。MVP要求显示层和逻辑层分离,View 发生变化时逻辑层(Model)不用改变。


为啥使用MVP

界面需求千变万化,而产品逻辑相对的稳定。这是Android甚至其它移动应用的基本现象,所以逻辑和视图的解藕变得很重要。之前有人问过我MVC在Android中的应用,Activity在是MVC中的哪一个?其实回答这个问题有些尴尬的地方,Activity在Android系统中本来是用来呈现界面的一个组件,而在Android应用开发中又无不兼负着界面跳转和数据访问的职责(很多数据访问逻辑的确是在Activity中发生的),Activity到底是View还是Control还是二者兼具?不好回答。而MVP却很好的解释Android视图和逻辑的解藕。


如何在Android中使用?
  • presenter
处于 View 和 Model 之间,控制View的行为同时调度业务逻辑层的行为。这样View和Model不用直接交互。在Android中我们可以建一个XxxPresenter类来负责这层。
  • View
毫无疑问,在Android中Activity是用来承载视图的,但是我们希望图的职责变得更加纯净,只负责显示视图,我们不希望Activity和model有直接的联系,我门可以定义一个View接口,在这个View中定义视图行为的抽象,让具体的Activity来实现,所以这个Activity要实现这个View,通常取名为XxxView。然后Presenter持有这个View的引用从而能调用View的行为。
  • Model

只负责应用的业务逻辑,例如数据请求或数据处理等,我们可以建一个XxxManager类来负责这层。


一个例子:MVP Demo
说了那么多,其实最重要的还是看Demo,不然都很虚,例子是学习新东西的最好方式。

例子源码地址:https://github.com/liuguangli/androidmvp


结尾

使用MVC模式来分离Android应用的界面和业务逻辑不是一件容易的事,MVP在Android应用解藕上却很容易解释。无论使用什么样的模式或方法构建应用,最终的目的都是为了提高代码的可读性、可维护性,冗长难懂的代码可能会让计算机编译执行多耗几毫秒,但是最要命的是解决一个小bug却花上几个小时甚至几天去理清代码来解决。作为开发者我门大部分时间还是耗费在调试、找bug上,而不是编码,至于代码设计,值得花时间去思考。

参考:http://antonioleiva.com/mvp-android/

目录
相关文章
|
3月前
|
XML 前端开发 测试技术
Android基础知识:解释Android的MVC和MVP模式。
Android基础知识:解释Android的MVC和MVP模式。
32 0
|
8月前
|
测试技术 Android开发 虚拟化
踩坑记录 | Android 逆向之如何处理 Kali Nat 模式无法上网?
踩坑记录 | Android 逆向之如何处理 Kali Nat 模式无法上网?
203 0
|
4月前
|
XML 数据库 数据安全/隐私保护
Android App规范处理中版本设置、发布模式、给数据集SQLite加密的讲解及使用(附源码 超详细必看)
Android App规范处理中版本设置、发布模式、给数据集SQLite加密的讲解及使用(附源码 超详细必看)
40 0
|
8月前
|
Android开发
Android 应用程序一直处于竖屏模式(又称肖像模式)
Android 应用程序一直处于竖屏模式(又称肖像模式)
117 0
|
10月前
|
存储 SQL 前端开发
借一个项目谈Android应用软件架构,你还在套用MVP 或MVVM吗
借一个项目谈Android应用软件架构,你还在套用MVP 或MVVM吗
|
Android开发
Android 7.1 启动分屏模式分析(SystemUI), 附应用启动分屏方法
Android 7.1 启动分屏模式分析(SystemUI), 附应用启动分屏方法
267 0
Android 7.1 启动分屏模式分析(SystemUI), 附应用启动分屏方法
|
Java Android开发
Android 7.1 FreeForm 多窗口模式
Android 7.1 FreeForm 多窗口模式
620 0
Android 7.1 FreeForm 多窗口模式
|
Web App开发 Java Android开发
android 7.1分屏(应用可能无法在分屏模式下正常运行)
android 7.1分屏(应用可能无法在分屏模式下正常运行)
427 0
android 7.1分屏(应用可能无法在分屏模式下正常运行)
|
编解码 Android开发
Android SELinux Enforcing 模式下问题及解决
Android SELinux Enforcing 模式下问题及解决
595 0