最先的時候,只知道MVC(模型+視圖+控制器). 把數據的管理與顯示分開, 經過控制器實現管理與顯示之間的互動, 方便開發與複用.架構
美好的事情老是很快發生, 在6月份接手的項目中,看到這樣的代碼, 把視圖顯示和數據處理的代碼放在ViewController裏面, 這連MVC 的標準都不是.優化
以前我常常這樣用,把數據單獨一層來處理, 而後在數據層裏面實現數據的持久化(本地化), 這層就是一般鎖說的 S .所用架構就是 MVC S 對象
MVC S 經過把數據存儲抽離, 是對MVC作的簡化.開發
無論用到MVC 仍是 MVC S,都會產生的問題: 視圖控制器由於初期需求的頻繁迭代,慢慢的積累下愈來愈多的業務邏輯代碼,相對應的數據轉換代碼頁愈來愈多.從而致使ViewController愈來愈大,後期維護愈來愈難. im
業界普遍使用MVVM: 數據
首先看一個典型的IOS是如何建立的:從這裏理解MVVM 項目
這是一個典型的MVC設置, Model呈現數據, View呈現用戶界面,ViewController完成他們二者之間的交互,一切看起來是那樣的完美.img
若是咱們稍微深一點考慮, 雖然View 和ViewController都是不一樣的組件, 但每次都是配對使用.di
這個圖解很好的描述了MVVM, 一個MVC 的加強版. 將視圖和控制器鏈接, 並將表示邏輯從Controller移到一個新的對象中,即View Model. MVVM聽起來很高大上,其實就是優化了MVC架構.交互
MVVM 中的ViewModel就是把數據的展現邏輯從VC中拆分出來,數據經ViewModel出來後,可直接用於View顯示