MVP 架构模式

简介

由 IBM 的子公司 Taligent 提出
MVC模式审议后延伸提出的一种软件设计模式
与MVC的最大区别:将业务逻辑和业务展示也做了一层隔离,Model与View不直接关联的
GWTP/Swing/Nette Framework 就使用这种模式

M - Model

数据层 - 业务模型

  • 封装与业务逻辑相关的数据
  • 数据读取/处理/存储,提供数据接口

V - View

展示层 - 用户界面

  • 数据显示
  • 动画效果
  • 接受用户操作

P - Presenter

逻辑层 - 作为 View 与 Model 交互的中间纽带

  • 从 Model 获取数据,将数据处理成可以直接显示的数据
  • 监听 View 的用户事件,处理与用户交互的逻辑

模型

mvp.png

View 接收用户事件,传递给 Presenter 处理逻辑,Presenter 更新 Model 数据,Model 改变后通知 Presenter 更新 View,View 从 Presenter 获取数据显示

优点

  • 模型与视图完全分离
  • 可以将一个 Presenter 用于多个视图,而不需要改变 Presenter 的逻辑
  • 可以脱离 UI 针对逻辑进行单元测试,Presenter 与 View 的交互是通过接口(interface)来进行的

缺点

  • View 和 Presenter 的交互会过于频繁,使得他们的联系过于紧密

参考文档

https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93presenter
https://www.jianshu.com/p/68aa6071c02e

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

推荐阅读更多精彩内容

  • 我们平时开发都使用的是MVC模式,也就是模型-视图-控制器,随着业务逻辑越来越复杂,Activity类一方面要负责...
    SunYo阅读 4,134评论 0 0
  • MVC 为了将数据模式和视图分离开来,并以控制器作为连接两者的桥梁以实现解耦。 MVC是一种框架模式而非设计模式,...
    官先生Y阅读 3,843评论 0 0
  • 一.为什么需要软件设计模式? 我们先来定义什么是好的软件架构: 软件架构上具有明确的分工,各个模块的功能职责平衡分...
    Altima阅读 63,662评论 15 26
  • 声明:本文很多部分是对王巍App 架构一书的学习笔记,如有侵权,请告知 我们需要决定在 app 中如何执行下列任务...
    orilme阅读 4,166评论 0 3
  • 引言 随着近些年MVP在Android上的火热,如今各种关于MVP的文章已经满天飞,由于各自的业务场景以及开发者自...
    Ian888阅读 5,461评论 0 7