当前位置: 首页 > news >正文

MVP架构梳理

一、概念解释

MVP 是一种将界面逻辑(View)与业务逻辑(Presenter)和数据逻辑(Model)分离的架构,通过接口解耦,使得代码更易于维护、测试和扩展。

com.example.mvpapp

├── model
│   └── LoginModel.java

├── view
│   ├── LoginView.java  (接口)
│   └── LoginActivity.java

├── presenter
│   └── LoginPresenter.java

└── MainActivity.java (可选跳转页)

View(视图层)

  • 职责:界面显示 + 用户交互事件监听。

  • 不能做逻辑处理,也不直接访问数据。

  • 通过调用 Presenter 来触发业务逻辑(如登录、拉数据)。

  • 提供接口(如 onLoginSuccess())供 Presenter 调用,返回结果并更新 UI。

Presenter(表示层/桥梁层)

  • 职责:控制器角色,处理所有的业务逻辑。

  • 连接 View 和 Model:

    • 从 View 获取用户输入;

    • 调用 Model 获取数据;

    • 处理完数据后,再调用 View 接口更新界面。

  • 完全不涉及 UI 控件,只调用 View 暴露的接口。

 Model(数据层)

  • 职责:接收来自 Presenter 的请求,处理数据逻辑,并将结果返回给 Presenter。

  • 提供数据访问接口(如数据库操作、网络请求等)

数据流向:

  1. 用户操作流:用户通过View进行操作 → View将操作委托给Presenter → Presenter处理逻辑并操作Model
  2. 数据更新流:Model数据变化 → Presenter获取新数据 → Presenter更新View显示

二、MVP 使用流程(以登录为例)

  1. 用户点击“登录” → View 捕获点击事件;

  2. View 调用 Presenter.login(username, password)

  3. Presenter 接收参数,调用 Model 执行登录逻辑;

  4. Model 返回结果:

    • 如果是同步:立即返回结果给 Presenter

    • 如果是异步(如网络请求):通过接口回调 Presenter

  5. Presenter 获取结果后,调用 View 提供的接口,更新界面。


       

    三、三者关系

    方向类型说明
    View → Presenter强依赖View 持有 Presenter 实例,主动调用业务方法
    Presenter → View接口依赖Presenter 持有view的接口引用
    Presenter → Model强依赖Presenter 调用 Model 实列
    Model → Presenter接口回调Model 在异步场景下通过接口回调通知 Presenter,但 Model 持有的是一个 Callback 接口,不是具体的 Presenter 类

    相关文章:

  1. 使用Mathematica绘制Peano Curve
  2. Linux 入门:操作系统进程详解
  3. C++惯用法:In-Place Construction 和placement new
  4. 【C++】封装unordered_set和unordered_map
  5. ROS2学习笔记|C++ 实现 ROS 2 订阅与发布功能的完整流程
  6. 《马小帅的Java闯关记》
  7. NV228NV254固态美光颗粒NV255NV263
  8. 网络编程,使用select()进行简单服务端与客户端通信
  9. 用 PyTorch 轻松实现 MNIST 手写数字识别
  10. 【MySQL】索引(重要)
  11. [Java]Java的三个阶段
  12. C++类_成员函数指针
  13. vae笔记
  14. 修复笔记:SkyReels-V2项目中的 from_config 警告
  15. 学习黑客Linux权限
  16. bc 命令
  17. 31.软件时序控制方式抗干扰
  18. 四年级数学知识边界总结思考-上册
  19. FPGA----基于ZYNQ 7020实现EPICS通信系统
  20. CATIA高效工作指南——曲面设计篇(一)
  21. 马丽称不会与沈腾终止合作,“他是我的恩人,也是我的贵人”
  22. 马斯克的“星舰基地”成为新城镇,首任市长为SpaceX员工
  23. 跳水世界杯总决赛陈佳获得女子3米板冠军,陈艺文获得亚军
  24. 塞尔维亚总统因突发健康问题,中断对美国的正式访问并回国
  25. 韩国国民力量党宣布金文洙为该党总统候选人
  26. 马克思主义理论研究教学名师系列访谈|薛念文:回应时代课题,才能彰显强大生命力