MVC:
Model, View, Controler
view (UI 層): view 只負責展示從 controller 接受到數據. 也就是把 model 轉化成 UI
model (數據層): 不能直接與 controller 通訊, 因爲 model 是獨立於 UI 存在的
controller: 通過 view 來接受用戶的輸入, 之後利用 model 來處理用戶數據, 最後把結果返回給 view. 它是 view 和 model 之間的一個協議者.
controller, view, model 各司其責互不干擾
存在的問題:
模型(model)代碼很少
控制器(controller)的代碼一不小心就越來越多
不好測試
MVVM:
Model, viewModel, view和Controller
MVVM 中, view 和 viewController 正式聯繫在一起, 把他們視爲一個組件
view 和 viewController 都不能直接引用 model, 而是引用視圖模型
viewModel 是一個放置用戶輸入驗證邏輯, 視圖顯示邏輯, 發起網絡請求和其他的代碼
MVVM 模式關鍵點:
用戶和 view 交互
view 和 viewModel 是多對一關係. 意味着一個 viewModel 只映射多個 view
view 持有 viewModel 的引用, 但是 viewModel 沒有任何 view 的信息
view 和 viewModel 之間有雙向數據綁定關係