Android上的MVP:如何组织显示层的内容_最新动态_新闻资讯_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 新闻资讯 > 最新动态 > Android上的MVP:如何组织显示层的内容

Android上的MVP:如何组织显示层的内容

 2014/6/17 11:19:28    程序员俱乐部  我要评论(0)
  • 摘要:英文原文:MVPforAndroid:howtoorganizethepresentationlayerMVP(ModelViewPresenter)模式是著名的MVC(ModelViewController)模式的一个演化版本,目前它在Android应用开发中越来越重要了,大家也都在讨论关于MVP的理论,只是结构化的资料非常少。这就是我写这篇博客的原因,我想鼓励大家多参与讨论,然后把MVP模式运用在项目开发中。什么是MVP?MVP模式可以分离显示层和逻辑层
  • 标签:
class="topic_img" alt=""/>

  英文原文:MVP for Android: how to organize the presentation layer

  MVP(Model View Presenter)模式是著名的 MVC(Model View Controller)模式的一个演化版本,目前它在 Android 应用开发中越来越重要了,大家也都在讨论关于 MVP 的理论,只是结构化的资料非常少。这就是我写这篇博客的原因,我想鼓励大家多参与讨论,然后把 MVP 模式运用在项目开发中。

  什么是 MVP?

  MVP 模式可以分离显示层和逻辑层,所以功能接口如何工作与功能的展示可以实现分离,MVP 模式理想化地可以实现同一份逻辑代码搭配不同的显示界面。首先要澄清就是 MVP 不是一个结构化的模式,它只是负责显示层而已,任何时候都可以在自己的项目结构中使用 MVP 模式。

  为什么要使用 MVP?

  我们知道在 Android 上逻辑接口和数据存取是紧耦合的,这个问题可以看看 CursorAdapter 这个例子,它既融合了适配器,同时也有显示的成分,而 cursor 很大程度上应该是数据数据存取层的。

  对于一个可扩展、稳定的应用来说,我们需要定义各个分离层,毕竟,我们不知道以后还要加入什么逻辑,是从本地数据库检索数据?还是从远程的 web Service 中?

  MVP 模式可以让显示界面和数据分离,我们开发的应用可以分离至少三层,这样也可以进行独立测试。有了 MVP 我们就可以从 Activity 中分离大部分代码,而且不用单元测试可以对每个模块进行单独测试了。

  怎么在 Android 上实现 MVP?

  说到这里,问题就有点复杂了。实现 MVP 的方式有很多种,每个人都可以根据自己的需求和自己喜欢的方式去修正 MVP 的实现方式,它可以随着 Presenter 的复杂程度变化。

  在 View 中需不需要控制进度条?或者是在 Presenter 处理?还有,谁来决定 Action Bar 该显示什么操作?这是一个艰难的决定。这里我会展示我自己的做法,但是我希望本文成为一个讨论如何应用 MVP 的地方,因为目前为止还没有实现 MVP 的标准方式。

  Presenter

  Presenter 主要作为沟通 View 和 Model 的桥梁,它从 Model 层检索数据后,返回给 View 层,但是不想典型的 MVC 结构,因为它也可以决定与 View 层的交互操作。

  View

  View 通常来说是由 Activity 实现的(也许是 Fragment,VIew,取决于 app 的整体结构),它会包含一个 Presenter 的引用,最理想的是 Presenter 由一个依赖注入管理器提供,比如 Dagger,不过如果不用注入器的话,就需要独立创建 Presenter 对象了。View 要做的就只是在每次有接口调用的时候(比如按钮点击后)调用 Presenter 的方法。

  Model

  对于一个结构化的 APP 来说,Model 主要是通向主领域层或者逻辑层的通道,如果使用了 Uncle Bob clean architecture 的话,Model 就可能是一个实现了用例场景的交互工具,这也是我将要在另一篇文章中讨论的一个主题。现在,只要把它看做是给 View 提供数据的容器就对了。

  一个例子

  鉴于已经解释的太长了,本人写了一个例子 an MVP example on Github,由一个登录界面组成,可以验证数据然后进入一个带有列表的主界面,数据来自 Model,因为比较简单,所以本文就不讲代码了,但是如果读者觉得还是很难理解的话,我还可以再写一篇文章详细介绍

  总结

  在 Android 上要分离接口和逻辑不容易实现,但是 Model-View-Presenter 模式可以更简单的防止在 Activity 中掺杂太多代码在大的项目中,组织好代码结构是最基本的要求,不然,代码的稳定和扩展就很困难了。

  翻译: 伯乐在线 - chris
  译文链接: http://blog.jobbole.com/71209/

上一篇: 企业架构之前端控制器 下一篇: 没有下一篇了!
  • 相关文章
发表评论
用户名: 匿名