前言:其实大概是知道的,也看了不下5次这个问题的解析,今天被问到,发现还是无法说清楚,干脆自己整一遍。好记性不如烂键盘
MVC是什么?干什么?一般用于哪里?优缺点?
是什么?
mvc是model,view,controller的缩写,是一种编程模式。(或者叫架构也行)是一种声明式思想的设计模式,嗯。。。。。至今争论不休,到底是框架模式还是设计模式,这是一个问题,待我哪天想懂了这个问题再来,今天不深究。
view:视图层,用户界面
controller:控制器,控制业务逻辑
model:模型层,数据保存
干什么?
注意:一般 MVC有两种执行方式
第一种 view接收命令:
view-controller-model-view
1)view传送指令到Controller
2)controller完成业务逻辑后,要求model改变状态
3)model将新的数据发送到view,用户得到反馈
第二种直接controller接收命令:
controller-model-view
一般用于哪里?
一种思想模式,有很多基于MVC的框架spring,strus
优缺点?
所有的通信都是单向的!!!(存在争议,暂时没搞懂)
1)把业务逻辑全部分离到Controller中,模块化程度高。当业务逻辑变更的时候,不需要变更View和Model,只需要Controller换成另外一个Controller就行了(Swappable Controller)。
2)观察者模式可以做到多视图同时更新。
MVVM是什么?干什么?一般用于哪里?优缺点?
是什么?
mvc发展衍生而来的MVVM,(中间有一个MVP,跟MVVM基本上一致,就是把presenter改成了viewmodel)
view:视图层,非常薄,不部署任何的业务逻辑
viewModel:视图模型层,很厚!!所有的逻辑都部署在这里面
model:模型层,相当于数据库
干什么
1)双向绑定,数据双向绑定,只要view改变,model也会改变,反之亦然
2)通信都是双向的!!
3)view与model不发生联系
一般用于哪里?
vue
优缺点?
1)提高可维护性,双向绑定,解决了view和model同步的问题,提高代码可维护性
2)简化测试。逻辑都是交给viewmodel,view会跟着model一起改变,减少多次更新测试
3)数据绑定声明式指令的写在view模板就没有办法打断点