【iOS】—— 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有优点也有缺点,但缺点在他们所带来的好处面前时不值一提的。他们的低耦合性,封装性,可测试性,可维护性和多人协作便利大大提高了开法效率。

  • 同时,我们需要保持的是一个拥抱变化的心,以及理性分析的态度。在新技术的面前,不盲从,也不守旧,一切的决策都应该建立在认真分析的基础上,这样才能应对技术的变化。

MVVM文件分类

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_62386635/article/details/128275249