MVC,MVP和MVVM这些模式是为了解决开发过程中的实际问题而提出来的,它们目前作为主流的几种架构模式而被广泛使用。
1,MVC(Model View Controller)模式
MVC是比较直观的架构模式,既用户操作-->View(负责接收用户的输入操作)-->Controller(业务逻辑处理)-->Model(数据持久化)-->View(将结果反馈给View)。
MVC使用非常广泛比如JavaEE中的SSH框架(Structs+Spring+Hi-bernate),ASP.NET中的ASP.NET MVC框架。如图
2,MVP(Model View Presenter)模式
MVP是把MVC中的Controller换成Presenter(呈现),目的就是为了完全切断View跟Model之间的联系,由Presenter充当桥梁,做到View-Model之间的完全隔离。
例如,.NET程序员熟知ASP.NET中的Web Forms(WF)技术既支持MVP模式,因为时间驱动的开发技术使用的就是MVP模式。控件组成的页面充当VIEW,实体数据库操作充当Model,而View和Model之间的控件数据绑定操作则属于 Presenter。控件事件的处理可以通过自定义iView接口实现,而View和iView都将对Presenter负责。如图所示为经典的MVP模式
3,MVVM(Model View ViewModel)模式
如果说MVP是对MVC的进一步改进,那么MVVM则是对思想的完全变革。MVVP是将“数据模型的数据的双向绑定”的思想作为核心,因此在view和Model之间没有联系,而是通过ViewModel进行交互,而且Model和ViewModel之间的交互是双向的,因此视图的数据变化会同时修改数据源而数据源的变化也会立刻反应到View上。
这个方面典型的应用有.NET的WPF,以及JavaScript框架Knockout和AngularJS,vue.js。如图为经典的MVVM模式。