探索MVP在Android中使用

来源:互联网 发布:sql server查询数据 编辑:程序博客网 时间:2024/05/16 13:42

探索MVP在Android中使用

MVP和MVC对比图
MVP交互图

一、MVP介绍
大家都对MVC很了解:M-Model 模型,V-View 视图,C-Controller 控制器,MVP是MVC的演化版本,MVP所对应的意义是:M-Model 模型,V-View 视图,P-Presenter 使命者。而MVP与MVC最不同的一点是M与V是不直接关联的,他们之间通过Presenter层实现间接交互。View专注于处理数据的可视化以及与用户的交互,同时让Model只关系数据的处理,基于MVC概念的MVP(Model-View-Presenter)模式应运而生。

    Android中很重要的一点就是对UI的操作基本上需要异步进行也就是在MainThread中才能操作UI,所以对View与Model的切断分离是 合理的。此外Presenter与View、Model的交互使用接口定义交互操作可以进一步达到松耦合也可以通过接口更加方便地进行单元测试。

在MVP模式里通常包含4个要素:

 (1) View :负责绘制UI元素、与用户进行交互(在Android中体现为Activity); (2) View interface :需要View实现的接口,View通过View interface与Presenter进行交互,降低耦合,方便进行单元测试; (3) Model :负责存储、检索、操纵数据(有时也实现一个Model interface用来降低耦合); (4) Presenter :作为View与Model交互的中间纽带,处理与用户交互的负责逻辑。

(原文地址: http://blog.csdn.net/vector_yi/article/details/24719873 )

三、MVP与MVC的异同

 MVC模式与MVP模式都作为用来分离UI层与业务层的一种开发模式被应用了很多年。在我们选择一种开发模式时,首先需要了解一下这种模式的利弊: 无论MVC或是MVP模式都不可避免地存在一个弊端:      额外的代码复杂度及学习成本。 这就导致了这两种开发模式也许并不是很小型应用。 但比起他们的优点,这点弊端基本可以忽略了: (1)降低耦合度 (2)模块职责划分明显 (3)利于测试驱动开发 (4)代码复用 (5)隐藏数据 (6)代码灵活性 对于MVP与MVC这两种模式,它们之间也有很大的差异。有一些程序员选择不使用任何一种模式,有一部分原因也许就是不能区分这两种模式差异。以下是这两种模式之间最关键的差异: (参考文章:http://www.infragistics.com/community/blogs/todd_snyder/archive/2007/10/17/mvc-or-mvp-pattern-whats-the-difference.aspx)

MVP模式:
View不直接与Model交互 ,而是通过与Presenter交互来与Model间接交互
Presenter与View的交互是通过接口来进行的,更有利于添加单元测试
通常View与Presenter是一对一的,但复杂的View可能绑定多个Presenter来处理逻辑

MVC模式:
View可以与Model直接交互
Controller是基于行为的,并且可以被多个View共享
可以负责决定显示哪个View

0 0
原创粉丝点击