Day27
由MVC衍生改變而來的MVVM到底是什麼呢?
MVVM的基礎模型結構上比MVC的多了一個視圖模型(ViewModel),這個ViewModel既是struct又是class。
因此,可以把ViewModel定位在MVC的模型(Model)與視圖融合控制器(View+Controller)中,從而衍生以下方式:
定義每個組成字母 M、V、VM 來理解這種模式。
M(Model)=[模型]:以最簡單的格式儲存特定的數據資訊結構。因保持原始的狀態,保證了它的便攜性與可重用性。
V(View)=[視圖]:是在IOSAPP中用來構建用戶介面(UI)使用的所有物件。泛指UIView類別、和其他提供用戶交互的 UI元件。
VM(ViewModel)=[視圖模型]:是位於模型與視圖控制器之間,ViewModel將模型中的數據轉換為可讀格式,由視圖控制器(ViewController)在視圖(View)中呈現。
爭論點:
設計模式中用於下載檔案的Networking Code位置。
總括而言:
視圖控制器(ViewController)將模型(Model)數據顯示給使用者,使使用者更新模型數據,視圖/視圖控制器只能通過 ViewModel 與模型間接溝通。另外在UI中,應用程式的數據從ViewModel提供給視圖控制器,透過視圖顯示,對視圖中的數據進行更改都須先傳遞給視圖控制器,視圖控制器只與ViewModel進行溝通。ViewModel是視圖控制器與模型的中介,單一的管道、守門者,數據通過它從模型流向視圖控制器。