MVC和MVVM理解
MVC与MVVM看似差不多,其实差着事儿呢,就好像这是两栋别墅,别墅表面上看起来都那样子,谁也不比谁多几个烟囱什么的,但是最大的区别就是别墅里面的“管家”不一样。管事的人身份不同,做事的方式跟流程也不一样。
古语云:你走你的路,我走我的路。你走路用脚,我走路用车。甭管咋样走,走就是了。
1 MVC
- MVC即模型、视图、控制器(Model View Controller)
- 简单来说就是通过controller的控制去操作model层的数据,并且返回给view层展示。controller在这里执行的的就是别墅里面的“管家”的作用。
- View 接受用户交互请求
- View 将请求转交给Controller处理
- Controller 操作Model进行数据更新保存
- 数据更新保存之后,Model会通知View更新
- View 更新变化数据使用户得到反馈
2 MVVM
- MVVM即模型、视图、视图模型(Model-View-ViewModel),ViewModel是MVVM这栋别墅的“管家”。
- 将其中的 View 的状态和行为抽象化,让我们可以将UI和业务逻辑分开。
- MVVM的优点是低耦合、可重用性、独立开发。
- View 接收用户交互请求
- View 将请求转交给ViewModel
- ViewModel 操作Model数据更新
- Model 更新完数据,通知ViewModel数据发生变化
- ViewModel 更新View数据
3 不同点
MVVM模式和MVC有些类似,但有以下不同
- ViewModel 替换了 Controller,在UI层之下
- ViewModel 向 View 暴露它所需要的数据和指令对象
- ViewModel 接收来自 Model 的数据
概括起来,MVVM是由MVC发展而来,通过在Model之上而在View之下增加一个非视觉的组件将来自Model的数据映射到View中。
再简单化的扩展性理解便是:在某种程度上讲,MVVM是MVC的徒弟,师从于MVC,师徒二人都具备差不多的技术,在某些特定情况下,徒弟比师傅身体强壮一些,做事更快更高效一些,此所谓年轻气力盛,年轻即意味着更多的可能,进步的空间更大、眼光更新颖、更长远一点。
人民有信仰,民族就有希望,国家就有力量。青年一代力气最盛,希望最大。
我愿中国青年都摆脱冷气,只是向上走,不必听自暴自弃流的话。能做事的做事,能发声的发声。有一分热,发一分光。就令萤火一般,也可以在黑暗里发一点光,不必等候炬火,此后如竟没有炬火,我便是唯一的光,倘若有了炬火,出了太阳,我们自然心悦诚服的消失,不但毫无不平,而且还要随喜赞美这炬火或太阳;因为它照了人类,连我都在内。------鲁迅