Chris Eidhof, Matt Gallagher, Florian Kugler 著
王巍, 茆⼦君, 李杰 译
使⽤ Swift 进⾏ iOS 架构
英文版本 1.0 (2018 年 5 月),中文版本 1.0.2 (2018 年 8 月)
© 2018 Kugler und Eidhof GbR
版权所有
ObjC 中国
在中国地区独家翻译和销售授权
获取更多书籍或文章,请访问 https://objccn.io
电子邮件: mail@objccn.io
关于本书 5
1 介绍 13
应用架构 13
Model 和 View 13
App 的本质是反馈回路 15
架构技术 16
App 任务 17
2 App 设计模式概览 19
Model-View-Controller 19
Model-View-ViewModel+协调器 22
Model-View-Controller+ViewState 26
Model 适配器-View 绑定器 (MAVB) 28
Elm 架构 (TEA) 31
网络 34
没有提到的模式 34
3 Model-View-Controller 38
探索实现 39
测试 51
讨论 55
改进 56
总结 68
4 Model-View-ViewModel+协调器 (MVVM-C) 71
探索实现 73
测试 88
讨论 91
较少响应式编程的 MVVM 92
经验和教训 97
关于本书
本书所专注的话题是 app 中所使用的架构,也就是那些将较小部分组合在一起形成一个完整
app 时所使用的结构和工具。通常来说,一个 app 会包含非常多种类的部件,像是用户输入、
网络服务、文件服务、音频和图像、以及窗口服务等等。在 app 开发中,如何对它们进行架构
是一个很重要的话题。想要将这些部件组合起来,同时保证它们的状态以及状态的变更稳定可
靠,而且能正确地进行传递,并非一件易事。这需要一套有力的规则,来定义组件之间相互协
作的方式。
App 设计模式
我们将一组被重复使用的设计规则称为设计模式。本书将会展示如何使用五种最主要的
app
设
计模式来完整实现一个 app。我们所挑选的模式中,有的已经经过广泛的验证,有的还处于实
验阶段,它们分别是:
→ Model-View-Controller (MVC)
→ Model-View-ViewModel+Coordinator (MVVM-C)
→ Model-View-Controller+ViewState (MVC+VS)
→ ModelAdapter-ViewBinder (MAVB)
→ Elm 架构 (The Elm Architecture, TEA)
译者注:相较于 “模型-视图-控制器”,对于三者连接在一起所组成的架构名称,我们
更倾向于保留被广泛接受的原文,也即 Model-View-Controller 的说法。但是,像是
协调器 (coordinator),适配器 (adapter),绑定器 (binder) 等日常不太常用的词语,在
上下文清晰的环境下,我们会选择使用中文译名。
抽象的框图往往被用来在最高层级描述设计模式的使用方式,但是它对这些模式在 iOS app 中
应该如何具体使用并没有太多帮助。我们之后将会详细研究每种架构的典型框图,并探讨它们
在实践中的使用方式。
在本书中,我们还会看到一系列不同的模式,在书写程序时,并没有哪个单独的模式能在所有
情景下都做到最好。根据你、你的程序或者你的团队所想要达成的目标和期望,以及整个过程
中所面临的的约束,任何一种模式都有可能是最佳选择。App 的设计模式不仅仅只是一套技术