MVC

是時候祭出這張圖了啦~!看過《斯坦福大學(xué)公開課:iOS 7應(yīng)用開發(fā)》的寶寶們應(yīng)該對此圖不陌生哦。順便說一句,真的非常喜歡Paul Hegarty教授??!

ios_mvc.jpg
MVC是什么?

是一種設(shè)計模式,M-model,V-view,C-controller.

  • 數(shù)據(jù)模型:負責(zé)存儲,定義,操作數(shù)據(jù)
  • 視圖:用來展示數(shù)據(jù)給用戶,和用戶進行操作交互
  • 控制器是M與V的協(xié)調(diào)者,控制器獲取數(shù)據(jù),將數(shù)據(jù)交給視圖展示在界面上
    Controller和View之間可以通信,從圖中也可以看出是代理模式,典型的,大家想下UITableView的代理和Controller之間的通信。當(dāng)數(shù)據(jù)更新的時候,Controller和Modle之間進行通信,方式是Notification和KVO,這個方式就像一個廣播一樣,Model發(fā)信號,Controller設(shè)置監(jiān)聽接受信號,當(dāng)有數(shù)據(jù)更新時就發(fā)信號給Controller,Model和View不能直接進行通信,這樣會違背MVC設(shè)計模式。
你還熟悉什么設(shè)計模式?
代理模式:

代理模式是一種回調(diào)機制,由三部分組成:代理對象,委托者,協(xié)議。委托者需要定義協(xié)議方法,代理對象實現(xiàn)協(xié)議方法,并且需要建立代理關(guān)系才可以通信,比如這句代碼tabelView.delegate = self; 代理是一對一的關(guān)系。那么時候用代理呢? 一般用于View和Controller之間的通信,且實現(xiàn)多個接口的時候,用代理是非常Nice的!

單例模式:

說白了就是一個類不通過alloc方式創(chuàng)建對象,而是用一個靜態(tài)方法返回這個類的對象。系統(tǒng)只需要擁有一個的全局對象,這樣有利于我們協(xié)調(diào)系統(tǒng)整體的行為,比如想獲得[UIApplication sharedApplication];任何地方調(diào)用都可以得到 UIApplication的對象,這個對象是全局唯一的。
實現(xiàn)單例分兩種情況:ARC+GCD 和MRC
給單例類添加了一個color屬性 寫法如下:
ARC+GCD

UserModel.m
UserModel.h

MRC現(xiàn)在幾乎不用,代碼就暫時不貼了。

觀察者模式:

KVO鍵值觀察。鍵值觀察機制是一種能使得對象獲取到其他對象屬性變化的通知 ,極大的簡化了代碼。實現(xiàn) KVO 鍵值觀察模式,被觀察的對象必須使用 KVC 鍵值編碼來修 改它的實例變量,這樣才能被觀察者觀察到。KVC是KVO的基礎(chǔ)。

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

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

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