設(shè)計(jì)模式學(xué)習(xí)筆記(二)觀察者模式

定義

定義了對(duì)象之間的一對(duì)多依賴,這樣一來,當(dāng)一個(gè)對(duì)象改變狀態(tài)時(shí),他的所有依賴者都會(huì)收到通知并自動(dòng)更新.

模式特點(diǎn)

  • 觀察者模式定義了對(duì)象間一對(duì)多的關(guān)系.
  • 主題可以通過一個(gè)接口來更新觀察者.
  • 觀察者和可觀察者之間通過松耦合的方式結(jié)合,可觀察者不知道觀察者的實(shí)現(xiàn)細(xì)節(jié),只知道觀察者實(shí)現(xiàn)了相應(yīng)的接口.
  • 有多個(gè)觀察者時(shí),不可以依賴特定的通知順序,這個(gè)順序和語言自身的實(shí)現(xiàn)有關(guān).
  • 當(dāng)觀察者取消訂閱時(shí),他將不再收到主題發(fā)出的消息.

個(gè)人理解

看完立刻讓我聯(lián)想到了OC中的KVO通知,仔細(xì)想了想他們確實(shí)都滿足上面的特點(diǎn),一對(duì)多,松耦合,改變后能夠傳遞消息.那再仔細(xì)想一想,協(xié)議block算嗎?寫起來吧,對(duì)他們進(jìn)行改造其實(shí)也能夠?qū)崿F(xiàn),但是這本身其實(shí)沒什么意義,因?yàn)?code>OC提供給我們的這兩種常用的方式其實(shí)已經(jīng)算是很不錯(cuò)的一種方式了,這里不會(huì)對(duì)KVO通知如何去使用做過多的闡述.
一直在接觸的RAC這種框架其實(shí)在我看來也是蠻像的,但他有個(gè)優(yōu)點(diǎn),我們可以在主題方先行結(jié)束訂閱,也可以在訂閱者方提前結(jié)束,并且通過函數(shù)式的優(yōu)點(diǎn),我們可以在時(shí)間空間上對(duì)信號(hào)進(jìn)行控制,比如節(jié)流忽略相關(guān)信息,這其實(shí)在我看來都是一定程度上在觀察者模式方向上的一定優(yōu)化和擴(kuò)展.
書中還擴(kuò)展了我們的觀察者不應(yīng)僅僅只是被動(dòng)地接收主題發(fā)送的信息,還可以主動(dòng)的去拉取,寫法大概上相當(dāng)于聲明一個(gè)BOOL值,當(dāng)要觀察的對(duì)象(OC中可以通過set方法觸發(fā)),當(dāng)我們主動(dòng)去拉取的時(shí)候,改變這個(gè)BOOL值此時(shí)才可以讓通知或者KVO發(fā)憷值,發(fā)出完再去更改這個(gè)BOOL值,這樣只有我們每次去拉取的時(shí)候他才會(huì)發(fā)送一次.

觀察者模式在OC中的個(gè)人猜測實(shí)現(xiàn)

  • 1 主題中應(yīng)該有一個(gè)數(shù)組來存儲(chǔ)自己所需要通知的對(duì)象,觀察者通過訂閱主題來將自己添加到主題的數(shù)組中.
  • 2 當(dāng)需要通知時(shí),主題會(huì)遍歷這個(gè)數(shù)組,給每一個(gè)對(duì)象發(fā)送消息.
  • 3取消訂閱時(shí),主題觀察者從數(shù)組中移除,以后就不會(huì)再發(fā)送了.
  • 4觀察者銷毀的時(shí)候,一定要取消訂閱,否則當(dāng)主題再次發(fā)送消息時(shí),會(huì)因?yàn)?code>觀察者已經(jīng)不在了而導(dǎo)致crash,這里調(diào)試起來還相當(dāng)?shù)睦щy,希望各位養(yǎng)成習(xí)慣吧(ps:一般老手這都是習(xí)慣了)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市砰盐,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌楞卡,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,826評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件淘捡,死亡現(xiàn)場離奇詭異池摧,居然都是意外死亡焦除,警方通過查閱死者的電腦和手機(jī)膘魄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門竭讳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人绢慢,你說我怎么就攤上這事∫扔撸” “怎么了?”我有些...
    開封第一講書人閱讀 164,234評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵棘幸,是天一觀的道長。 經(jīng)常有香客問我误续,道長,這世上最難降的妖魔是什么女嘲? 我笑而不...
    開封第一講書人閱讀 58,562評(píng)論 1 293
  • 正文 為了忘掉前任诞帐,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘愕鼓。我一直安慰自己,他們只是感情好菇晃,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著驻子,像睡著了一般。 火紅的嫁衣襯著肌膚如雪估灿。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,482評(píng)論 1 302
  • 那天域慷,我揣著相機(jī)與錄音,去河邊找鬼犹褒。 笑死,一個(gè)胖子當(dāng)著我的面吹牛叠骑,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播宙枷,決...
    沈念sama閱讀 40,271評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼付材,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼圃阳!你這毒婦竟也來了厌衔?” 一聲冷哼從身側(cè)響起富寿,我...
    開封第一講書人閱讀 39,166評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤锣夹,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后银萍,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,608評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評(píng)論 3 336
  • 正文 我和宋清朗相戀三年飞袋,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片麻捻。...
    茶點(diǎn)故事閱讀 39,926評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖贸毕,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情崖咨,我是刑警寧澤锻拘,帶...
    沈念sama閱讀 35,644評(píng)論 5 346
  • 正文 年R本政府宣布署拟,位于F島的核電站,受9級(jí)特大地震影響推穷,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜馒铃,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評(píng)論 3 329
  • 文/蒙蒙 一痕惋、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧值戳,春花似錦、人聲如沸堕虹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽逼裆。三九已至赦政,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背封寞。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留仅财,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,063評(píng)論 3 370
  • 正文 我出身青樓盏求,卻偏偏與公主長得像,于是被迫代替她去往敵國和親碎罚。 傳聞我的和親對(duì)象是個(gè)殘疾皇子磅废,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 什么是觀察者模式拯勉?我們先打個(gè)比方,這就像你訂報(bào)紙宫峦。比如你想知道美國最近放生了些新聞,你可能會(huì)訂閱一份美國周刊导绷,然后...
    泥孩兒0107閱讀 679評(píng)論 0 0
  • *面試心聲:其實(shí)這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個(gè)offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,140評(píng)論 30 470
  • 1 場景問題# 1.1 訂閱報(bào)紙的過程## 來考慮實(shí)際生活中訂閱報(bào)紙的過程屎飘,這里簡單總結(jié)了一下,訂閱報(bào)紙的基本流程...
    七寸知架構(gòu)閱讀 4,621評(píng)論 5 57
  • 一檐盟、深復(fù)制和淺復(fù)制的區(qū)別? 1押桃、淺復(fù)制:只是復(fù)制了指向?qū)ο蟮闹羔槪磧蓚€(gè)指針指向同一塊內(nèi)存單元怨规!而不復(fù)制指向?qū)ο蟮?..
    iOS_Alex閱讀 1,376評(píng)論 1 27
  • 提到佛洛依德,就算不是專門學(xué)習(xí)兒童方面的學(xué)者也都略知一二蝎亚,因?yàn)樗谛睦韺W(xué)上的建樹實(shí)在是太有名了。比如說先馆,很有名的冰...
    七彩馬有很多愛好閱讀 398評(píng)論 0 0