大型软件的开发需要有清晰合理的架构,否则将难以开发和维护。而MV*则是为了解决问题而出现的软件架构
目前的MV*
主要有MVC
、MVP
、MVVM
,而三者的主要差别,在于如何粘合Model和View层。
一、MVC
MVC
是最常见也是最经典的软件架构,MVC中把软件分为三个部分:
1)Model
层:保存数据
2)View
层:向用户呈现信息
3)Controller
层:处理业务逻辑,将用户输入转化为相应的命令,通知M层进行更新
其通信图如下:
在MVC中,controller接受view的操作事件,根据事件的不同,进行不同的操作。可以是调用Model层的接口进行数据操作,也可以是进行View的跳转。通常而言,一个Controller可以对应多个View,但一个View不宜对应多个Controller。Controller不关注View的具体实现,而只需要被动地接收来自View的通知,而Model层的变动不直接通知View,View采用观察者模式来监听Model的变化
二、MVP
MVP
模式中,取消了Controller
,取而代之的是Presenter
。MVP模式有以下的特点:
1)通信是双向的
2)View与Model不直接通信,通过Presenter来联系
3)View层很薄,不包含任何业务逻辑,它是被动视图,没有主动性。而Presenter层很厚,所有的逻辑都部署在Presenter层
其通信图如:
MVP中,Presenter
的作用是接收View
的命令,然后对Model
进行操作。和MVC模式不同的是,Presenter会反作用于View
,一个Presenter
只对应一个View
。而Model层的更新首先通知Presenter
,再由Presenter
去更新View
三、MVVM
MVVM
是当前前端开发领域最为流行的架构模式。其和MVP
模式非常类似,而它和MVP
模式的主要区别在于:MVVM中采用的是双向绑定(View层的变动自动反映在ViewModel中,而ViewModel的变动,也自动反应在View中)
其通信图如:
对于MVP
和MVVM
,它们完全隔离了Model
和View
,而在MVC
中,Model
和View
则可以进行通信。MVP
和MVVM
其实是MVC
模式的变种,可以更好地适应富客户端的开发需求