Swift-iOS架構MVVM各層分工

簡介

MVVM 由三層組成:

image.png

  • Model

模型對象,用於保存數據,一般定義爲只有數據並無方法的結構體(Struct)編程

  • View

用於呈現 UI(用戶界面)並響應用戶的事件,一般是 ViewController 和 View緩存

  • ViewModel

用於橋接 Model 和 View 兩層。準備好 Model 提供給 View 以呈現 UI,並把 View 層的用戶輸入數據更新到 Model 中。markdown

MVVM架構

image.png

ViewModel詳解

ViewModel是 MVVM 模式的核心,主要任務是鏈接 View 和 Model 層,爲 View 層準備數據,而且響應 View 層所提供的用戶事件。同時它還負責處理路由,和發送用戶行爲數據。網絡

這樣 ViewModel 層的責任仍是很重,所以咱們把它進一步細分爲各個模塊,大體包括ViewModel、Routing、Tracking、Repository、Networking、DataStore。架構

ViewModel

扮演一個協助者的角色。ViewModel 經過 響應式編程的方式來通知View,而View經過 數據綁定的方式,來監聽 ViewModel 的數據變化,並及時更新 UI。spa

Routing

是負責路由和導航的模塊。ViewModel 會調用 Routing 模塊,來響應 View 的頁面跳轉等請求。而Routing模塊會完成具體的路由跳轉工做。code

Tracking

負責統計分析數據的模塊。ViewModel 在響應 View 的請求時(如點擊按鈕事件),會調用 Tracking 模塊,來發送用戶行爲的數據(如點擊)。orm

Repository

是惟一數據來源層,維護着 App 所使用的 Model 數據。可經過 Networking 來訪問網絡的後臺數據,或調用 DataStore 來獲取本地緩存的數據。對象

ViewModel 會調用 Repository 模塊 來訪問(獲取)數據。也是響應式編程的方式:由 ViewModel 給 Repository 發起請求,而後監聽 Repository 來獲取數據所發生的變化。接口

Networking

是網絡層,負責訪問 BFF,而後把 BFF 返回的 JSON 數據 Decode 成 Model 數據。

Repository 與 Networking 的接口也是響應式編程的方式。Repository 會給 Networking 發起請求,並監聽 Networking 的返回。

DataStore

爲數據存儲層,用於把數據緩存到 App 裏面。使得用戶在不需等待網絡請求的狀況下能夠快速看到 UI。Repository 與 DataStore 的接口也是響應式編程的方式。Repository 監聽 DataStore 的數據變化。

相關文章
相關標籤/搜索