代理:是軟件設(shè)計(jì)模式的一種(也可以說是用代理的設(shè)計(jì)模式實(shí)現(xiàn)的消息傳遞機(jī)制)肠套,以@protocol的形式體現(xiàn)栗柒,以一對(duì)一的方式傳遞信息嗽冒。
代理是以協(xié)議的方式連接委托方與代理方的呀伙,委托方通過代理定義需要實(shí)現(xiàn)的方法與選擇實(shí)現(xiàn)的方法,由代理方實(shí)現(xiàn)添坊,再由委托方調(diào)用代理方所實(shí)現(xiàn)的協(xié)議方法來實(shí)現(xiàn)代理的設(shè)計(jì)模式剿另。
通知:是一種使用觀察者模式實(shí)現(xiàn)的跨層的消息傳遞機(jī)制,而通知的傳遞方式為一對(duì)多
一般我們的項(xiàng)目中幾個(gè)最基本的層為:網(wǎng)絡(luò)層贬蛙,數(shù)據(jù)層雨女,業(yè)務(wù)層與UI展示層,一般情況從網(wǎng)絡(luò)層獲取了數(shù)據(jù)都會(huì)由數(shù)據(jù)層接收阳准,業(yè)務(wù)層處理戚篙,最終由UI層負(fù)責(zé)展示。而開發(fā)過程中有些情況會(huì)需要直接由網(wǎng)絡(luò)層發(fā)送消息至UI展示層溺职,這時(shí)候使用通知就是很好的一種實(shí)現(xiàn)方法了岔擂。
關(guān)于通知的工作流程大概為:消息放松->通知中心->觀察者1,2浪耘,3……
由于通知內(nèi)部是閉源的乱灵,看不到其實(shí)現(xiàn)原理,通過查閱資料以及網(wǎng)上部分代碼的閱讀七冲,可以大致梳理一下通知的實(shí)現(xiàn)流程:
所有的通知都會(huì)放在一個(gè)角Notification Map的映射表里痛倚,表中以通知名稱Name為key,通知的眾多觀察者Observers List為value存儲(chǔ)澜躺,Observers List是存儲(chǔ)眾多觀察者的一個(gè)數(shù)組蝉稳。當(dāng)一個(gè)通知消息到來,系統(tǒng)會(huì)在Notification Map表中查找到對(duì)應(yīng)的通知Name掘鄙,再給其眾多觀察者發(fā)送消息耘戚,從而達(dá)到一個(gè)通知的目的
本文由作者原創(chuàng),未經(jīng)允許不得轉(zhuǎn)載