MVC模式、MVP模式与MVVM模式

在学习编程的过程中,我们或多或少都听说过这几种模式:MVC、MVP与MVVM,今天用一个篇幅来总结一下我认知中的三种模式

MVC

MVC模式的意义是软件可以分为三个部分:

  • 视图(View):用户界面
  • 控制器(Controller):业务逻辑
  • 模型(Model):数据模型

MVC模式的基础通讯逻辑是这样的:

  1. View传送指令到Controller
  2. Controller完成业务逻辑后,会要求Model改变状态
  3. Model数据更新后将数据发送给View,用户得到反馈

互动模式

MVC有两种互动模式,一种是通过View接收指令,另一种是通过Controller接收指令

  1. 我们使用View接收指令时,View会将指令发给Controller进行逻辑处理,Controller处理以后会通知Model进行修改,随后Model通知View进行更新
  2. 当我们使用Controller接受指令时,Controller接收到指令,然后通知Model进行数据修改,Model负责通知View进行视图更新。


MVP

MVP模式中Controller变成了Presenter,同时也改变了通信方向

在MVP的模式下View与Model不再发生任何交互,所有的一切都通过Presenter进行通信

Presenter在这里负责所有的业务逻辑处理,View也就成为了“被动视图”

MVVM

MVVM则是我们近些年听到最多的模式,当前应用最广的VUE、Angular与React都是属于MVVM模式的框架

MVVM = Model + View + ViewModel

这里的View与ViewModel的通信方式是双向绑定,View的所有变动都会体现在ViewModel中,由ViewModel进行逻辑处理并且通知Model进行数据更新,反过来一样,当Model中数据进行更新时也同时在ViewModel中进行逻辑处理,然后ViewModel会通知View进行视图更新

总结

以上三种模式对于编程规范甚至是了解框架原理都非常重要,有了模式的基础我们会更好地了解框架地做法甚至时逻辑地实现,能够有效减少无用代码的编写

当然以上大多都是参考自阮一峰老师的《MVC,MVP 和 MVVM 的图示》一文