Lecture III & IV - MVVM

MVVM Design Paradigm


上节课,我们简单地学习了 SwiftUI 并构建了一个 Memorize app

这节课,我们将要学习如何构建 App 的逻辑,并将我们之前构建的 Memorize 应用中的逻辑、数据同 UI 分离开。我们要学习的设计范式叫 MVVM,全称 Model-View-ViewModel,是 SwiftUI 推荐的架构模式,旨在提高代码的可读性、可测试性和可维护性。它由三部分核心组件构成,即:

  1. Model:用于描述应用程序的逻辑和数据访问。
  2. View:展示界面,响应用户输入,但不直接处理业务逻辑。
  3. ViewModel:用于绑定连接 View 和 Model,监听 model 的变化,提供状态给 view 使用。

因为 SwiftUI 是声明式 (declared) 的,所以你只需要描述 UI 应该长什么样,而 SwiftUI 会在每次 model 变化后自动更新 view(比如说 Text("Hello") 中的内容改变后,UI 也随之改变,你完全不需要自己 rebuild)。我们关心的,只有如何将这些东西分离开。

Connecting Model and UI

我们现在知道 model 是什么,知道 view UI 是什么,但是将两者联系在一起的中间层是?

Swift 是强类型语言,类型安全可以大大减少 Bug

本节课重点强调了使用类型约束让代码更可靠且易于重构

View 本质上是一个泛型的 Struct,每次 UI 更新其实就是重建这个 View 的 Struct