MVVM模式
文章目录
- MVVM模式
- 为什么使用MVVM?
- MVVM分别代表什么含义?
- MVVM通信关系
- MVVM模式的优缺点
- 优点:
- 缺点:
- 概括
- 总结
- MVVM文件分类
为什么使用MVVM?
iOS中,我们使用的大部分都是MVC架构。虽然MVC的层次明确,但是由于功能日益的增加、代码的维护,使得更多的代码被写在了Controller中,这样Controller就显得非常臃肿。
为了给Controller瘦身,后来又从MVC衍生出了一种新的架构模式MVVM架构。
MVVM分别代表什么含义?
- Model层:请求的原始数据
- View/Controller层:视图展示,由ViewController来控制
- ViewModel层:负责业务处理和数据转化
MVVM通信关系
- View与Model是不直接通讯的。
- ViewController与Model是不直接通讯的。
- View只与ViewController / ViewModel两者发生关系。
- Model只与ViewModel通讯。
MVVM模式的优缺点
优点:
- 低耦合: View 可以独立于Model变化和修改,一个 viewModel 可以绑定到不同的 View 上
- 可重用性: 可以把一些视图逻辑放在一个 viewModel里面,让很多 view 重用这段视图逻辑
- 独立开发: 开发人员可以专注于业务逻辑和数据的开发 viewModel,设计人员可以专注于页面设计
- 可测试: 通常界面是比较难于测试的,而 MVVM 模式可以针对 viewModel来进行测试
双向绑定数据
缺点:
数据绑定使得Bug 很难被调试。你看到界面异常了,有可能是你 View 的代码有 Bug,也可能是 Model 的代码有问题。数据绑定使得一个位置的 Bug 被快速传递到别的位置,要定位原始出问题的地方就变得不那么容易了。
对于过大的项目,数据绑定需要花费更多的内存。
概括
通俗易懂的讲,MVVM和MVC的区别就是在MVC中是将Model里的东西在C里传递到C,MVVM可以理解为将要传的东西用一个叫做ViewModel的类封装了,传值的时候只需要将这个类的实例传过去即可。
总结
-
MVC的设计模式也并非是病入膏肓,无药可救的架构,最起码目前MVC设计模式仍旧是的iOS开发的主流框架,存在即合理。针对文章所述的弊端,我们依旧有许多可行的方法去避免和解决,从而打造一个轻量级的视图控制器。
-
MVVM是MVC的升级版,完全兼容当前的MVC架构,MVVM虽然促进了UI代码与业务逻辑的分离,一定程度上减轻了ViewController的臃肿度,但是View和ViewModel之间的数据绑定使得MVVM变得复杂和难用了,如果我们不能更好的驾驭两者之间的数据绑定,同样会造成Controller代码过于复杂,代码逻辑不易维护的问题。
-
一个轻量级的视图控制器是基于MVC和MVVM模式进行代码职责的分离而打造的.MVC和MVVM有优点也有缺点,但缺点在他们所带来的好处面前时不值一提的。他们的低耦合性,封装性,可测试性,可维护性和多人协作便利大大提高了开法效率。
-
同时,我们需要保持的是一个拥抱变化的心,以及理性分析的态度。在新技术的面前,不盲从,也不守旧,一切的决策都应该建立在认真分析的基础上,这样才能应对技术的变化。