当前位置: 首页 > 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 类
    http://www.xdnf.cn/news/278767.html

    相关文章:

  1. Dubbo(95)如何在社交网络中应用Dubbo?
  2. 注意力机制
  3. 2025年PMP 学习一
  4. 文章记单词 | 第60篇(六级)
  5. mysql中int(1) 和 int(10) 有什么区别?
  6. STM32GPIO输入实战-按键key模板及移植
  7. I.MX6U的GPIO配置和LED点灯实验。
  8. leetcode:最小覆盖字符串
  9. 【操作系统】吸烟者问题
  10. NHANES指标推荐:LC9
  11. Android第四次面试总结之Java基础篇(补充)
  12. 【NTN 卫星通信】NTN关键问题的一些解决方法(一)
  13. 55认知干货:深空产业
  14. 2022年第十三届蓝桥杯省赛B组Java题解
  15. 128. 最长连续序列
  16. 【人工智能】大模型安全的深度剖析:DeepSeek漏洞分析与防护实践
  17. 牛客周赛91 D题(数组4.0) 题解
  18. 如何用更少的显存训练 PyTorch 模型
  19. 【Java JUnit单元测试框架-60】深入理解JUnit:Java单元测试的艺术与实践
  20. Spring AI 实战:第九章、Spring AI MCP之万站直通
  21. HTML5实战指南:语义化标签与表单表格高级应用
  22. AI日报 · 2025年5月04日|Hugging Face 启动 MCP 全球创新挑战赛
  23. 《工业社会的诞生》章节
  24. 相向双指针-16. 最接近的三数之和
  25. 基于AWS Marketplace的快速解决方案:从选型到部署实战
  26. OpenFAST 开源软件介绍
  27. 大学之大:高丽大学2025.5.4
  28. Java并发编程-多线程基础(三)
  29. 在 Ubuntu 系统中,查看已安装程序的方法
  30. Redis-----认识NoSQL