Day20-MVC/MVVM/VIPER/Redux 模式总结
一、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 | 高 | 优秀 | 高 | 状态驱动型应用 |