前言
MVC、MVP 和 MVVM 都是常见的软件架构设计模式(一种架构模式往往使用了多种设计模式)。
一、MVC
MVC 将应用抽象为:
- View 层是界面。
- Model 层是业务逻辑。
- Controller 层用来调度 View 层和 Model 层。将用户界面和业务逻辑合理的组织在一起,起粘合剂的效果,所以 Controller 中的内容能少则少,这样才能提供最大的灵活性。
在 MVC 模式中,Model 和 View 可能有耦合,因为 MVC 仅仅将应用抽象,并未成功的限制数据流。
【拓展】从设计模式角度看 MVC:组成 MVC 的三个模式分别是组合模式、策咯模式、观察者模式。
- View层,单独实现了组合模式。
- Model层和View层,实现了观察者模式。
- View层和Controller层,实现了策咯模式。
二、MVP
MVP 模式将 MVC 的 Controller 改名为 Presenter。同时,改变了通信方式:
- Model 和 View 之间不直接通信,都通过 Presenter 通信。
- View 和 Presenter 是双向通信。
- Model 和 Presenter 也是双向通信。
MVP 模式中,Presenter 负担很重,所有逻辑都部署在那里——Presenter 需要知道 View 和 Model 的结构,并且在 Model 变化时候需要手动操作 View,增加编码负担,降低代码维护性。
三、MVVM
MVVM 用 ViewModel 代替了 Presenter。ViewModel 会自动同步数据到视图——MVVM 自动从 Model 映射到 View(实现方式是模板渲染),不需要用户手动操作视图。这样代码更简单不易出错,代码更好阅读和维护。
典型的实现是 Vue.js。
【参考文章】
深入理解MVC
mvc和mvvm之间有什么区别啊?