注:个人理解仅供参考
1、MVC
优点:
1、模块独立,解耦
缺点:
1、厚重的ViewController
2、遗失(无处安放)的网络逻辑
3、较差的可测试性
图
2、MVVM
优点
1、低耦合:View可以独立于Model变化和修改, 一个ViewModel可以绑定到不同的View上
2、可重用性:可以把一些视图逻辑放在一个ViewModel里面,让很多View重用这段视图逻辑
3、独立开发:开发人员可以专注于业务逻辑和数据的开发ViewModel,设计人员可以专注于页面设计
4、可测试:通常界面是比较难以测试的,而MVVM模式可以针对ViewModel来进行测试
缺点
1、数据绑定使得bug难被调试,发现界面异常了,有可能是你View的代码有Bug,也可能是Model的代码有问题。数据绑定使得一个位置的Bug快快速传递到别的位置,要定位原始出问题的地方就变得困难
2、对于过大的项目,数据绑定和数据转化需要花费更多的内存(成本)
图
MVVM模块层级图
实例
登录界面 逻辑图
参考:https://juejin.cn/post/7072184612524392478