前言:其实大概是知道的,也看了不下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:模型层,相当于数据库
MVC 和MVVM模式的区别?

干什么

1)双向绑定,数据双向绑定,只要view改变,model也会改变,反之亦然
2)通信都是双向的!!
3)view与model不发生联系

一般用于哪里?

vue

优缺点?

1)提高可维护性,双向绑定,解决了view和model同步的问题,提高代码可维护性
2)简化测试。逻辑都是交给viewmodel,view会跟着model一起改变,减少多次更新测试
3)数据绑定声明式指令的写在view模板就没有办法打断点

扩展–关于框架模式和设计模式,暂时不扩了。

相关文章: