RxSwift学习

RxSwift 23 RxSwift 在 MVVM 架构中的应用

2017-10-06  本文已影响77人  貘鸣

摘自 RxSwift - Reactive Programming with Swift 一书第 23 章.

传统 MVC 的缺点在于很容易将 Controller 中塞满代码, 因为除了视图控制逻辑, 还有一些弱业务逻辑在其中, 从而导致 Controller 不断变大, 导致后期难于维护.

所以在现实中需要一种新的架构来解决这一问题.

MVVM 简介

在 MVVM 中添加了一个新的角色: ViewModel

MVVM示意

如上图所示, View Model 在这个架构中处于核心地位, 在其中处理业务逻辑, 并且充当 Model 和 Controller 的中介.
MVVM 中各角色描述:

上述职责分工中, VM 的职责类似 MVC 中的 C, 但实际应用时有一定的区别.

前面也说到, MVC 中的 C 由于插入太多非视图控制代码, 导致体积不断增大, 故 MVVM 中的做法是将 View 和 Controller 绑定在一起, Controller 中只包含视图控制逻辑, 即控制器只负责控制视图.

进行这样的职责分离后, 以前在控制器中的弱业务逻辑现在就转移到了 VM 中. 清晰的职责分工也让单元测试更加容易.

另外, 由于 VM 的存在, 将 app 中的其他部分完全与表示层隔离, 提高了代码的可重用性. 例如, 可以很容易地替换掉 View 和 对应的 Controller, 保持其他组分不变, 将应用从 iOS 平台迁移到 mac 平台.

在编码时, 一个最佳实践是将 VM 的依赖在构造时候进行注入.

MVVM 的好处在于它让文件更小, 职责更分明, 当结合 RxSwift 和 RxCocoa 使用时, 和传统 MVC 对比, 还有以下优点:

对 VC 的测试
上一篇 下一篇

猜你喜欢

热点阅读