Day20-MVC/MVVM/VIPER/Redux 模式总结

YVTU

一、MVC(Model-View-Controller)

组成角色:

  • Model:数据模型,负责业务逻辑和数据操作。
  • View:视图层,展示 UI,不处理逻辑。
  • Controller:控制器,连接 Model 和 View,处理交互逻辑。

优点:

  • 简单易懂,开发快速。
  • Apple 官方推荐,UIKit 默认架构。

缺点:

  • 控制器容易臃肿(Massive View Controller)。
  • 耦合度高,不利于复用与测试。

适用场景:

  • 小型项目、原型、快速迭代开发。

二、MVVM(Model-View-ViewModel)

组成角色:

  • Model:业务模型。
  • View:展示界面。
  • ViewModel:业务处理 + 数据转化,协调 Model 和 View。

优点:

  • 解耦良好。
  • ViewModel 可测试性强。
  • 结合 RxSwift/Combine 可实现响应式编程。

缺点:

  • 学习成本略高。
  • ViewModel 容易过度设计。
  • 对绑定机制依赖较强。

适用场景:

  • 中大型项目,关注可维护性与可测试性。

三、VIPER(View-Interactor-Presenter-Entity-Router)

组成角色:

  • View:显示 UI,响应用户操作。
  • Interactor:处理业务逻辑。
  • Presenter:桥接 View 与 Interactor,组织展示逻辑。
  • Entity:业务数据模型。
  • Router (Wireframe):处理导航逻辑。

优点:

  • 高度解耦,结构清晰。
  • 模块职责单一,易测试。
  • 模块复用性强。

缺点:

  • 模块数量多,开发初期复杂。
  • 模板代码重复度高。

适用场景:

  • 企业级大型项目,追求高可维护性和高测试覆盖率。

四、Redux(状态集中管理)

组成角色:

  • State:应用状态,不可变结构。
  • Action:描述用户意图或事件。
  • Reducer:纯函数,接收 State + Action 生成新 State。
  • Store:全局状态管理中心。

优点:

  • 状态集中管理,变更可追踪。
  • 容易调试与测试。
  • 适合响应式架构(如 SwiftUI、Combine)。

缺点:

  • 学习曲线较高。
  • 所有逻辑都需建模为 Action,模板代码多。

适用场景:

  • 多模块共享状态、状态变更频繁的复杂应用。

架构模式对比总结表:

模式 解耦性 可测试性 复杂度 适用项目
MVC 小型项目
MVVM 较好 中大型项目
VIPER 优秀 大型企业级项目
Redux 优秀 状态驱动型应用