MVP 架构

1.1. MVP 的定义

    MVP,全称 Model-View-Presenter

    MVC(Model-View-Controller,模型-视图-控制器)

    MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供数据,View负责显示。

    以下是两者区别:

1.2. MVP 的优缺点

优点:

    1. 降低耦合度,实现了Model和View真正的完全分离,可以修改View而不影响Modle

    2. 模块职责划分明显,层次清晰

    3. Presenter可以复用,一个Presenter可以用于多个View,而不需要更改Presenter的逻辑(当然是在View的改动不影响业务逻辑的前提下)

    4. 利于测试驱动开发。以前的Android开发是难以进行单元测试的(没有测试是很难保证软件质量的),在使用MVP的项目中Presenter对View是通过接口进行,在对Presenter进行不依赖UI环境的单元测试的时候。可以通过Mock一个View对象,这个对象只需要实现了View的接口即可。然后依赖注入到Presenter中,单元测试的时候就可以完整的测试Presenter应用逻辑的正确性。

    5. View可以进行组件化。在MVP当中,View不依赖Model。这样就可以让View从特定的业务场景中脱离出来,可以说View可以做到对业务完全无知。它只需要提供一系列接口提供给上层操作。这样就可以做到高度可复用的View组件。

缺点:

    1. Presenter中除了应用逻辑以外,还有大量的View->Model,Model->View的手动同步逻辑,造成Presenter比较笨重,维护起来会比较困难。

    2. 由于对视图的渲染放在了Presenter中,所以视图和Presenter的交互会过于频繁。

    3. 如果Presenter过多地渲染了视图,往往会使得它与特定的视图的联系过于紧密。一旦视图需要变更,那么Presenter也需要变更了。

    4. 额外的代码复杂度及学习成本。

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

    (1) View :负责绘制UI元素、与用户进行交互(在Android中体现为Activity);

    (2) View interface :需要View实现的接口,View通过View interface与Presenter进行交互,降低耦合,方便进行单元测试;

    (3) Model :负责存储、检索、操纵数据(有时也实现一个Model interface用来降低耦合);

    (4) Presenter :作为View与Model交互的中间纽带,处理与用户交互的负责逻辑

 MVP Demo

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容