什么是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/

更多相关文章

  1. 【译文】通过 android:ssp 高效过滤 Android(安卓)Intents
  2. Android中的一个简单的List应用
  3. Android(安卓)中文 API (100) —— ScrollView
  4. Android(安卓)如何 绘制View
  5. Android事件拦截与处理
  6. Android应用程序UI设计(1)_布局
  7. Android中Handler小例子
  8. Android控件架构详解
  9. 介绍MVP Model-View-Presenter在Android中的应用

随机推荐

  1. Android的设计模式-简单工厂模式
  2. Android(安卓)主配置文件
  3. Android的设计模式-组合模式
  4. 《阿里巴巴 Android(安卓)开发手册》(一)
  5. Activity-RelativeLayout
  6. Android的设计模式-代理模式
  7. Android的设计模式-解释器模式
  8. 50个Android开发人员必备UI效果源码
  9. Android的设计模式-原型模式
  10. Android的设计模式-桥接模式