说说MVC与MVVM

MVC

MVC模式很多都熟悉,就是模型(M)-视图(V)-控制器(C)模式,大多都应用在网页开发上,比较典型的如SPRING MVC,就严格的遵循了MVC模式来进行开发。模型(Model)代表了应用程序的状态、更新、维护、查询后端数据库的数据以及一些其他的原始数据等。视图(View)就比较直观了,它定义了用户从应用程序所看到的一切。它包含了用户界面以及非可视的导出数据(如XML、JSON、CSV、HTML等)。控制器(Controller)接收从视图发送过来的事件然后传送给模型,模型处理这些事件并且同步模型中发生改变的东西到视图去。大致示意图如下:


说说MVC与MVVM_第1张图片

MVVM

MVVM模式是从MVC模式改变而来的。大多数都支持MVVM实际上是基于MVC中的视图和视图的状态,但仍然和模型有互连的。在MVVM模式中,ViewModel取代了控制器。但ViewModel和Model的职责却不同了。大致示意图如下:


说说MVC与MVVM_第2张图片

从图上可知,现在视图和模型是没有联系了,都是通过ViewModel来进行互连交互的。MVVM的核心就是“数据模型数据双向绑定”。也就是视图的数据变化会通过ViewModel马上修改模型的数据,同样模型的数据变化也会马上提现到视图上去。
通过对MVVM的进一步了解以后,我们可以将示意图表现如下:


说说MVC与MVVM_第3张图片

从图上可以看出,视图和ViewModel是双向绑定的,视图数据改变后通过ViewModel来更新模型(Model)中数据,模型更新后通知(notify)ViewModel来将改变的数据变现在视图上。
当然,我更倾向于以下示意图中所示的,在View和ViewModel的双向绑定中隐式的引入了binder层;
说说MVC与MVVM_第4张图片

参考:浅谈 MVC、MVP 和 MVVM 架构模式

你可能感兴趣的:(说说MVC与MVVM)