MVVM

转载自:2020 Spring CS193p
Model 模型
UI Independent: e.g. 模型不会import SwiftUI
Data + logic: 模型封装了应用的数据和逻辑,其中逻辑是指数据的调用时机,数据的匹配等
“The Truth”: 模型的数据版本唯一
View 视图
Reflects the Model: 视图反应模型的内容
Stateless: 视图是无状态的,即它不需要任何state,因为它只是展示模型的state
Declared: 与imperative相比较,声明式vs命令式。声明式只需要声明控件,而命令式则不止需要生成控件,还需要安排和管理控件。声明式的好处在于不需要理解控件如何被创建
Reactive: 视图随模型的改变而改变
ViewModel 视图模型
Bind View to Model:绑定视图和模型,一旦模型发生改变,视图会得到反应
Interpreter: 解析模型数据
Process Intent: 视图改变模型的方法
View随Model改变
1、Model发生改变
2、Model发送消息给ViewModel
3、ViewModel再发送给View
4、View收到消息后
5、View从ViewModel拉取数据并重绘
View改变Model
1、View发送手势
2、View调用ViewModel的intent function
3、ViewModel修改Model