欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 美景 > MVP架构梳理

MVP架构梳理

2025/5/5 9:10:03 来源:https://blog.csdn.net/qq_45372239/article/details/147702556  浏览:    关键词: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 类

    版权声明:

    本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

    我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

    热搜词