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 类
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值