模型对象,用于保存数据,一般定义为只有数据并无方法的结构体(Struct)编程
用于呈现 UI(用户界面)并响应用户的事件,一般是 ViewController 和 View缓存
用于桥接 Model 和 View 两层。准备好 Model 提供给 View 以呈现 UI,并把 View 层的用户输入数据更新到 Model 中。markdown
ViewModel是 MVVM 模式的核心,主要任务是链接 View 和 Model 层,为 View 层准备数据,而且响应 View 层所提供的用户事件。同时它还负责处理路由,和发送用户行为数据。网络
这样 ViewModel 层的责任仍是很重,所以咱们把它进一步细分为各个模块,大体包括ViewModel、Routing、Tracking、Repository、Networking、DataStore。架构
扮演一个协助者的角色。ViewModel 经过 响应式编程
的方式来通知View,而View经过 数据绑定
的方式,来监听 ViewModel 的数据变化,并及时更新 UI。spa
是负责路由和导航的模块。ViewModel 会调用 Routing 模块,来响应 View 的页面跳转等请求。而Routing模块会完成具体的路由跳转工做。code
负责统计分析数据的模块。ViewModel 在响应 View 的请求时(如点击按钮事件),会调用 Tracking 模块,来发送用户行为的数据(如点击)。orm
是惟一数据来源层,维护着 App 所使用的 Model 数据。可经过 Networking 来访问网络的后台数据,或调用 DataStore 来获取本地缓存的数据。对象
ViewModel 会调用 Repository 模块 来访问(获取)数据。也是响应式编程的方式:由 ViewModel 给 Repository 发起请求,而后监听 Repository 来获取数据所发生的变化。接口
是网络层,负责访问 BFF,而后把 BFF 返回的 JSON 数据 Decode 成 Model 数据。
Repository 与 Networking 的接口也是响应式编程的方式。Repository 会给 Networking 发起请求,并监听 Networking 的返回。
为数据存储层,用于把数据缓存到 App 里面。使得用户在不需等待网络请求的状况下能够快速看到 UI。Repository 与 DataStore 的接口也是响应式编程的方式。Repository 监听 DataStore 的数据变化。