Android MVP 如何组织表示层

翻译 2016年05月30日 12:51:28

MVP(模型视图表示)模式来源于众所周知的MVC(模型视图控制器),这一段时间是目前在Android应用程序开发越来越重要的衍生物。有越来越多的人谈论它,但是却又很少有可靠和结构化信息。

什么是MVP?
MVP模式允许表示层逻辑中分离出来,从而使该接口是如何工作的一切是从我们如何代表它在屏幕上分开。理想情况下,MVP模式将实现这一同样的逻辑可能有完全不同的看法互换。
澄清第一件事是,MVP是不是一种架构模式,它只是表示层负责。在任何情况下,它始终是更好地将它用于不使用它在所有的架构。

为什么要使用MVP?
Android中,我们有从这一事实的Android活动密切耦合到接口和数据访问机制所产生的问题。我们可以发现极端的例子,如CursorAdapter的,它搭配适配器,这是视图的一部分,使用游标,这东西应该被降级到数据访问层的深处。
对于应用程序可以很容易地扩展和维护,我们需要定义很好地分离层。我们该怎么办,如果明天,而不是从数据库中检索相同的数据,我们需要从Web服务呢?我们将不得不重做我们的整个看法。
MVP使我们的数据源视图无关。我们把应用程序分为至少三个不同的层次,这也让我们分别测试它们。随着MVP,我们能够从活动占据了大部分的逻辑出来,使我们可以在不使用仪器测试进行测试。



如何为Android实现MVP
那么,这是在这一切开始变得更加分散。有MVP,每个人的许多变化可以调节模式的理念,以他们的需求,他们感觉更舒服的方式。该模式在变化的责任,我们委托给主持人量基本上依赖。
认为负责启用或禁用一个进度条,还是应该由主持人来完成?又是谁决定哪些行动应在操作栏显示?这就是艰难的决定开始。我将展示如何我平时工作,但我想这篇文章更多的是讨论的地方,如何申请MVP,因为到知道有没有“标准”的方式来实现它严格的准则。

表示
表示负责充当视图和模型之间的中间人。它从模型中检索数据并返回格式化的视图。但不同的是典型的MVC,它也决定,当你与视图互动会发生什么。
视图
视图,通常由活动实现的(它可能是一个片段,查看...取决于应用程序的结构),将包含对主持人的参考。主持人将由依赖注入,如匕首理想地提供,但如果你不使用这样的事情,这将是负责创建演示对象。该视图会做的唯一事情就是打电话从每有一个界面操作(点击一个按钮为例)时间演示的方法。
模型
在具有良好的分层架构的应用程序,这种模式只会是通往领域层或业务逻辑。如果我们使用了Bob大叔干净架构,模型很可能是实现用例交互件。但是,这是我想在以后的文章,讨论另一个话题。现在,它足以把它看作我们要在视图中显示数据的提供者。


一个例子

https://github.com/antoniolg/androidmvp

相关文章推荐

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

MVP(Model View Presenter)模式是从众所周知的MVC(Model View Controller)模式中派生出来的,这在Android开发中变得越来越重要。越来越多的人在谈论MV...

iOS获取本机号码

参考: 1、IOS开发之----获取本机号码等

Java Web 表示层技术(Java Web的工作原理)

1.什么是http协议?   HTTP 协议遵行请求/响应模型   HTTP 协议是一种无状态的的协议 2. HTTP工作流程: 客户端发送HTTP请求                    ...

会话层,表示层,应用层

会话层的功能会话层的主要功能是在两个节点间建立、维护和释放面向用户的连接,并对会话进行管理和控制,保证会话数据可靠传送。在会话层和传输层我们都提到了连接,那么会话连接和传输连接到底有什么区别呢?我们以...

三层架构:表示层-业务逻辑层-数据访问层2

概述   在软件体系架构设计中,分层式结构是最常见,也是最重要的一种结构。微软推荐的分层式结构一般分为三层,从下至上分别为:数据访问层、业务逻辑层(又或称为领域层)、表示层。   三层结构...

三层架构:表示层-业务逻辑层-数据访问层

三层架构和MVC是两个东西。 非要相关的话: 三层架构中"表现层"的aspx页面对应MVC中的View(继承的类不一样) 三层架构中"表现层"的aspx.cs页面(类)对应MVC中的Co...

gcc编译流程及中间表示层RTL的探索

gcc编译流程及中间表示层RTL的探索收藏 新一篇: 解读VC++编程中的文件操作API和CFile类 | 旧一篇: Effective Item21 尽可能使用const 内容摘要 本文将以...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android MVP 如何组织表示层
举报原因:
原因补充:

(最多只允许输入30个字)