MVVM 架構(gòu)初探

1、MVVM:Model + View + ViewModel ,當(dāng)然Controller 是不能少的,而在這個設(shè)計(jì)模式中Controller 的作用就是一個”空殼”,負(fù)責(zé)將 Model 、 View、 ViewModel 關(guān)聯(lián)起來,搭建成MVVM設(shè)計(jì)模式。

如下圖:


2、MVVM 設(shè)計(jì)模式重要的一點(diǎn)就是搭建成一個數(shù)據(jù)的"雙向綁定"

A:ViewModel 與 View 的綁定


這里使用Facebook封裝的第三方框架:KVOControl,進(jìn)行數(shù)據(jù)綁定
Github地址:https://github.com/facebook/KVOController

B:ViewModel 與 Model 的綁定



3、View 與 ViewModel 的傳值方式

MVVM 與 MVC 不同的一點(diǎn) View與控制中心的傳值交互方式不同,MVC 更多是使用 協(xié)議的方式,將View的值傳遞給Control。
在MVVM中View是擁有控制中心ViewControl 的,使用可以直接調(diào)用ViewControl的方法進(jìn)行傳值等操作,不需要協(xié)議等方式


完整DEMO

===================== 案列分享 =====================
1、MVVM的典型例子:個人中心(這個只是一個MVC模式,并不是MVVM設(shè)計(jì)模式)
http://www.itdecent.cn/p/81d0c573f7a8
結(jié)論:1、Model 是相對于View的內(nèi)容創(chuàng)建的
2、Model 填充 View 并且 View 根據(jù) Model 的數(shù)據(jù)決定展示的樣式

2、MVVM 功能的劃分
http://www.itdecent.cn/p/865cb28c5794
結(jié)論: 1、ViewModel 是負(fù)責(zé)定義View要顯示的內(nèi)容結(jié)構(gòu)
2、ViewController 即是View也是Controller
3、ViewModel 是負(fù)責(zé)業(yè)務(wù)、數(shù)據(jù)轉(zhuǎn)換
4、Model 是數(shù)據(jù)模型,也負(fù)責(zé)網(wǎng)絡(luò)的請求
5、KVO的使用:當(dāng)數(shù)據(jù)有更新時,刷新UI
6、MVVM 方便業(yè)務(wù)的擴(kuò)展
7、ViewModel對Controller沒有依賴,能很好的移植

3、MVVM的好處:
https://www.objccn.io/issue-13-1/
1、代碼的測試變得更簡單
2、ViewControl 的變得更輕量
3、可以使用ReactiveCocoa綁定

4、MVVM + RAC
http://www.cocoachina.com/ios/20170213/18659.html?=787782089

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容