iOS中MVVM的理解

MVVM展开来也就是 Model - View - ViewModel

  • MVVM衍生于MVC,是MVC的一种演进,促进了UI代码和业务逻辑的分离,抽取Controller中的展示逻辑放到ViewModel里边
  • M: 数据模型 Model
  • V: 就是View和Controller联系到一起,视为一个组件View. View和Controller都不能直接引用模型Model、可以引用视图模型ViewModel. ViewController尽量不涉及业务逻辑,让ViewModel去做这些事情. ViewController只是一个中间人,负责接收View的事件、调用ViewModel的方法、响应ViewModel的变化.
  • VM: ViewModel负责封装业务逻辑、网络处理和数据缓存.使用ViewModel会轻微的增加代码量,但是总体上减少了代码的复杂性. ViewModel之间可以有依赖.

注意:

  • View引用ViewModel, 但反过来不行,因为如果VM跟V 产生了耦合,不方便复用.即不要在ViewModel中引入 #import <UIKit/UIKit.h> ,任何视图本身的引用都不应该放在ViewModel中.
  • ViewModel可以引用Model,但反过来不行.

优点:

        低耦合、可复用、数据流清晰、而且兼容MVC,便于代码的移植、并且ViewModel可以拆出来独立开发、方便单元测试.

缺点

        类会增多、ViewModel会越来越庞大、调用复杂度增加、双向绑定数据会导致问题调试变得困难.

总结:

  • MVVM其实是MVC的变种. MVVM只是帮MVC中的Controller瘦身,把一些逻辑代码和网络请求分离出去.不让Controller处理更多的东西,不会变的臃肿, MVVM和MVC可以根据实际需求进行灵活选择.
  • MVVM在使用当中,通常还会利用双向绑定技术,使得Model变化时,ViewModel会自动更新,而ViewModel变化时,View也会自动变化.OC中可以用RAC(ReactiveCocoa)函数响应式框架来实现响应式编程.Swift中采用RxSwift

猜你喜欢

转载自blog.csdn.net/SharkToping/article/details/130355678