简述MVC、MVP、MVVM的区别

前言

    记录一下自己对这三种设计模式的理解,这三种模式均为MV*模式,M为模型层,V为视图层,都是希望能更好的对模型、视图与逻辑层的解耦。

正文

  1. MVC
    简述MVC、MVP、MVVM的区别
    MVC模型中,C为(controller)。主要处理逻辑为:View触发事件,controller响应并处理逻辑,调用Model,Model处理完成后将数据发送给View,View更新

  2. MVP
    简述MVC、MVP、MVVM的区别
    MVP模型中,P为Presenter,并以Presenter为核心,负责从model获取数据,并填充到View中。该模型使得Model和View不再有联系,且View被称为“被动视图”,暴露出setter接口。

  3. MVVM
    简述MVC、MVP、MVVM的区别
    MVVM模型中,VM为ViewModel,同样是以VM为核心,但是不同于MVP,MVVM采用了数据双向绑定的方案,替代了繁琐复杂的DOM操作。该模型中,View与VM保持同步,View绑定到VM的属性上,如果VM数据发生变化,通过数据绑定的方式,View会自动更新视图;VM同样也暴露出Model中的数据


    PS:以上图片均来自阮一峰老师的MVC,MVP 和 MVVM 的图示