MVVM是MVC的增强版,实质上和MVC没有本质区别,只是代码的位置变动而已
MVC
Model、View、Controller,分别表示数据、视图、控制器。当然,其他方向的开发人员应该不也会太陌生,其实这只是一种设计思想,具体用什么语言和做什么开发并不重要。所谓MVC便是这几个单词的简写
- Model:数据模型,用来存储数据
- View:视图界面,用来展示UI界面和响应用户交互
- Controller:控制器(大管家角色),监听模型数据的改变和控制视图行为、处理用户交互
MVVM
Model-ViewModel-View-Controller
发现比MVC架构中多了一个ViewModel,没错,就是这个ViewModel,他是MVVM相对于MVC改进的核心思想
由于Controller主要用来处理各种逻辑和数据转化,复杂业务逻辑界面的Controller非常庞大,维护困难,所以有人想到把Controller的数据和逻辑处理部分从中抽离出来,用一个专门的对象去管理,这个对象就是ViewModel,是Model和Controller之间的一座桥梁。当人们去尝试这种方式时,发现Controller中的代码变得非常少,变得易于测试和维护,只需要Controller和ViewModel做数据绑定即可,这也就催生了MVVM的热潮。
优缺点
- Controller清晰简洁: ViewModel分离了大部分Controller代码,更加清晰和容易维护。
- 方便测试:开发中大部分Bug来至于逻辑处理,由于ViewModel分离了许多逻辑,可以对ViewModel构造单元测试。
- 开发解耦(举两个例子):
- 一人负责逻辑实现、另一人负责UI实现
- 敏捷开发时,不是等后端做好了接口我们再去开发,不过在没有接口的情况下通常我们可以把Controller和View完成。
缺点:
- 看起来代码会比MVC多点
- 需要对每个Controller实现绑定