MVVM in iOS

mvvm

MVC 的问题

MVC 是 iOS 预设的开发模式,这个传统的模式随着业务的增长,会发现 View和Controller的逻辑都被放到了ViewController中,导致一系列的问题,MVC 甚至有了个新名字:Massive View Controller

它带来了这些问题:

  • 逻辑混乱,View代码和Controller代码都混在一起。
  • 单文件代码量过大,容易产生冲突。
  • 难以测试。

MVVM

MVVM 那些使我们可以把所有表示逻辑放进去的东西。我们打算将其称为 “View Model” —— 它位于 View/Controller 与 Model 之间,现在,它的交互看起来如下:

使用 ViewModel

ViewController中很大的一部分任务是处理数据,将Model中的数据转换成View上要显示的格式,但这些明显不属于ViewController的职责。

ViewController 职责

在MVVM中的view不再是单独的View了,而是包含 ViewController的View层。它的数据、业务处理被抽像到了ViewModel中。

ViewController 的职责到底是什么?它应该属于View层的一部分,负责:

  • 布局
  • 动画
  • 设备转屏
  • View或Window的切换
  • 显示UI

Model 职责

Model 将作为简单的对象,用来维持数据结构。

同时,会使用Extension来扩展 Model,为其添加数据存取的功能。

RES:

REF::