MVVM是Model-View-ViewModel的简写。它本质上就是MVC 的改进版。iOS中,大部分的架构都是使用MVC,但随着功能的增加、代码的维护,使得更多的代码都放在Controller中,这样显得Controller非常臃肿,维护起来也麻烦,因此衍生出了MVVM架构来给Controller瘦身。
- Model层:请求的原始数据;
- View层:视图展示,由ViewController来控制;
- ViewModel层:负责业务处理和数据转化;
MVVM的架构模式:
![以下这张图可以简单概括](https://img-blog.csdnimg.cn/20181126215502405.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTMzNjMzNjM=,size_16,color_FFFFFF,t_70)
MVVM的优点
- 低耦合。视图(View)可以独立于Model变化和修改,一个ViewModel可以绑定到不同的"View"上,当View变化的时候Model可以不变,当Model变化的时候View也可以不变;
- 可重用性。你可以把一些视图逻辑放在一个ViewModel里面,让很多view重用这段视图逻辑(备注:这里ViewModel是轻量级的,非一个大模块);
- 由于控制器的功能大都移动到View上处理,大大的对控制器进行了瘦身。
MVVM的缺点
- 数据绑定使得 Bug 很难被调试;
- 一个大模块中,model也会很大,虽然使用方便了很容易保证了数据的一致性,当长期持有,不释放内存,就造成了花费更多的内存;
总结
在MVVM模式中打造 一个轻量级的ViewController进行代码职责的分离。这样他的低耦合性,封装性,可测试性,可维护性和多人协作便利才能大大提高了开法效率。