除了 MVC、MVP、MVVM,常见的三层架构(或类似分层架构)还包括以下模式:
1. PAC(Presentation-Abstraction-Control)
组成元素
层 | 职责 |
---|
Presentation | 用户界面(类似 View) |
Abstraction | 业务逻辑和数据(类似 Model) |
Control | 协调 Presentation 和 Abstraction(类似 Controller) |
架构思想
- 适用于复杂交互系统(如航空管制、工业控制)。
- 强调模块化,每个 PAC 单元可递归嵌套(类似微前端)。
- 比 MVC 更松耦合,适合分布式系统。
适用场景
2. MVI(Model-View-Intent)
组成元素
层 | 职责 |
---|
Model | 不可变数据状态(类似 Redux 的 Store) |
View | 渲染 UI(如 React/Vue 组件) |
Intent | 用户意图(如点击事件 → 触发状态更新) |
架构思想
- 单向数据流(类似 Flux/Redux)。
- 状态不可变,所有变化通过新 Model 触发。
- 适合函数式编程(如 React + Redux)。
适用场景
- 前端状态管理(Redux、MobX)
- 响应式 UI(如 Jetpack Compose、Flutter)
3. RMR(Resource-Method-Representation)
组成元素
层 | 职责 |
---|
Resource | 数据实体(类似 Model) |
Method | 操作(如 HTTP 方法 GET/POST) |
Representation | 数据表现形式(如 JSON/XML) |
架构思想
- RESTful API 设计模式,强调资源化。
- 无状态,依赖 HTTP 语义。
- 类似 MVC,但更轻量,适用于 API 服务。
适用场景
- RESTful 后端(如 Express.js、Spring Boot)
- 微服务架构
4. Flux(Facebook 提出的架构)
组成元素
层 | 职责 |
---|
View | 用户界面(React 组件) |
Action | 用户行为(如按钮点击) |
Dispatcher | 事件调度中心 |
Store | 数据状态(类似 Model) |
架构思想
- 严格单向数据流(View → Action → Dispatcher → Store → View)。
- 适合复杂前端状态管理(如 Redux 的基础)。
适用场景
- 大型前端应用(如 Facebook、Instagram)
- 需要严格状态管理的场景
5. Clean Architecture(洋葱架构)
组成元素
层 | 职责 |
---|
Entities | 核心业务对象(如 User、Order) |
Use Cases | 业务逻辑(类似 Service 层) |
Interface Adapters | 转换层(如 Controller、Presenter) |
Frameworks & Drivers | 基础设施(如数据库、UI) |
架构思想
- 依赖反转(内层不依赖外层)。
- 适合大型企业应用(如 DDD 领域驱动设计)。
适用场景
6. VIPER(iOS 架构)
组成元素
层 | 职责 |
---|
View | UI 展示 |
Interactor | 业务逻辑(类似 Model) |
Presenter | 协调 View 和 Interactor |
Entity | 数据对象 |
Router | 导航逻辑 |
架构思想
- 比 MVC/MVVM 更细粒度,适合大型 iOS 项目。
- 高可测试性(每层可单独测试)。
适用场景
总结:不同三层架构对比
架构 | 核心思想 | 适用场景 | 典型框架/技术 |
---|
MVC | 分层解耦 | 传统 Web、GUI | Spring、Rails |
MVP | View 被动,Presenter 主导 | 高可测试性 | Android、.NET |
MVVM | 数据绑定 | 现代前端 | Vue、React、WPF |
PAC | 模块化嵌套 | 工业软件 | 分布式 UI |
MVI | 单向数据流 | 前端状态管理 | Redux、Compose |
RMR | RESTful 资源化 | API 服务 | Express、Spring Boot |
Flux | 严格单向流 | 复杂前端 | Redux |
Clean Architecture | 依赖反转 | 企业级后端 | DDD 项目 |
VIPER | 细粒度分层 | iOS 大型应用 | Swift |
如何选择?
- 简单 UI → MVC/MVVM
- 复杂状态管理 → Flux/MVI
- API 服务 → RMR
- 企业级后端 → Clean Architecture
- iOS 大型项目 → VIPER
这些架构并非互斥,实际开发中可能混合使用(如 React + Redux ≈ MVI + Flux)。理解核心思想比死记硬背更重要。