复杂的软件必须有清晰合理的架构,否则无法开发和维护。
MVC(Model-View-Controller)是最常见的软件架构之一,业界有着广泛的应用。它本身很容易理解,但是要讲清楚,它与衍生的MVP和MVVM架构的区别就不容易了,但是通过几张图片可以很容易对架构的基本原理进行理解。
1. MVC
MVC模式的意思是,软件分为三个部分,Model,View,Controller
Model: 保存的数据
View: 视图,用户界面
Controller: 控制器,也就是业务逻辑
他们三者的具体关系如图:
View将用户指令发送给Controller, Controller 根据业务逻辑处理指令,然后将结果发送给Model去保存结果,Model保存完结果之后,将结果发送给View显示出来,所有的通信都是单向的。
2. 互动模式
接受用户指令的时候,MVC可以分成两种模式,一种是通过View接受指令,传给Controller,如图:
另外一种是通过Controller接受指令,如图:
3. MVP模式
MVP就是分为Model,View,Presenter,就是讲Controller变为了Presenter,不过同时改变了通信方向,具体表现如图:
各部分通信都是双向的,View和Model不发生关系,View非常薄,数据被动视图,没有任何的主动性,只是用来显示数据,Presenter会很厚,包含所有的逻辑(业务逻辑和视图显示逻辑)。
4. MVVM
MVVM就是将Presenter变成了ViewModel,唯一的区别就是MVVM采用双向绑定,View的变化会自动反映在ViewModel上,反之,ViewModel的改变也会在View上体现。