详谈MVC、MVP 和 MVVM
MVC、MVP 和 MVVM 这三种设计模式的区别
1. 角色职责
- MVC
- 模型(Model):负责数据处理和业务逻辑,直接与数据库或数据源交互
- 视图(View):负责用户界面的展示和用户交互
- 控制器(Controller):Controller 接收用户输入并处理用户请求,协调 Model 和 View 之间的交互 更新模型和视图
- MVP
- 模型(Model):负责数据处理和业务逻辑
- 视图(View):负责展示和渲染视图,不包含任何业务逻辑,通过接口与Presenter通信
- 表示器(Presenter):Presenter 作为中间人,负责处理用户交互,调用 Model层 更新数据 并通知 View层 更新显示
- MVVM
- 模型(Model):负责数据处理和业务逻辑
- 视图(View):负责视图的展示和用户交互 通过数据绑定直接与ViewModel交互
- 视图模型(ViewModel):ViewModel 作为 Model 和 View 之间的桥梁,负责提供视图所需的数据和操作;是视图的抽象,封装了视图的状态和行为,通常会暴露可绑定的属性和命令,View通过数据绑定(data binding)与ViewModel绑定
2. 数据绑定
3. 性能和可测试性
4. 复杂性
5. 技术依赖
6. 综合比较
特征 | MVC | MVP | MVVM |
---|---|---|---|
复杂性 | 中等 | 高 | 高 |
可测试性 | 中等 | 高 | 高 |
可维护性 | 中等 | 高 | 高 |
灵活度 | 低 | 中等 | 高 |