11、MVP、MVVM、MVI 区别

23 阅读1分钟

1、MVP

  • 分层:View / Presenter / Model
  • Presenter 中间调停,View 和 Model 不能直接通信
  • View 和 Presenter 互相持有引用,接口回调耦合高
  • 缺点:接口多、Presenter 容易臃肿、难单元测试

2、MVVM

  • 分层:View / ViewModel / Model
  • ViewModel 不持有 View 引用,通过 LiveData/StateFlow 观察者模式 双向通信
  • 没有大量接口,解耦更强,支持数据驱动 UI
  • 适配 Jetpack、Compose,可单元测试,比 MVP 更优雅

3、MVI

  • MVVM 进阶规范,统一单向数据流
  • 三层核心:Intent (用户意图) → State (单一状态) → View (渲染 UI)
  • 整个页面只有一个唯一 State,所有 UI 都由 State 渲染
  • 数据单向流动,不乱改状态,适合复杂页面、可追溯、易维护

一句话区分(面试直接说)

  • MVP:Presenter 中间人,View 和 P 互相持有,接口多、耦合高。
  • MVVM:ViewModel 配合可观察数据,数据驱动 UI,解耦无强引用。
  • MVI:在 MVVM 基础上,规范单向数据流、单一数据源 State,架构更统一、适合复杂项目。