M-V-VM在iOS開發中的應用

        項目開發中,常常遇到一個界面很複雜,各類控件各類View,相互之間有複雜的互動邏輯,各組件的數據有時還須要專門的服務器接口支持服務器

       MVC模式會把這些邏輯都放到C裏面實現,使得某個ViewController很是龐大複雜。無論是改動功能仍是debug,都很費時。網絡

       M-V-VM模式引入MVC中,能夠改善這種狀況。結構以下:數據結構

解釋異步

       將一個界面中的各類元素分紅幾個相對獨立的組件,每一個組件建立一個對應的ViewModelViewController建立並管理這些ViewModel之間的相互通信互動spa

       ViewModel管理View的刷新和用戶操做事件。若是用戶的響應須要其餘組件進行互動,則經過delegate向上傳遞給ViewController。由ViewController進行ViewModel之間的通信路由debug

       View提供一個用戶刷新顯示的API,內部元素的具體刷新實現外部不可見。接口

除了刷新顯示,View還提供用戶操做的響應,經過delegate通知ViewModel處理。事件

       DataModelViewModel管理。它具備獲取View的數據、保存數據到某個數據結構的功能。通常會建立一個公共屬性保存獲取到的新數據。ViewModel對這個屬性創建KVO監控。路由

       咱們通常會使用異步方式從網絡下載新數據,當新數據下載成功,通過解析後存儲到公共屬性裏。這時,KVO方法被激活執行,ViewModel讀取屬性的值傳遞給View,讓它刷新顯示開發

       DataModel提供一個相似reloadData的更新數據方法,由ViewModel調用。ViewModel只要調用了這個方法,一切就開始自動運行

       DataModel僅對ViewModel可見。這樣,這三者造成了一個相對獨立的生態圈,外部僅能看見ViewModel。由ViewModel提供對外的API,好比刷新數據,提交跨ViewModel通信申請等

Demo項目在這裏下載地址

相關文章
相關標籤/搜索