觀察者模式

觀察者模式:有時(shí)被稱作發(fā)布/訂閱模式,觀察者模式定義了一種一對(duì)多的依賴關(guān)系,讓多個(gè)觀察者對(duì)象同時(shí)監(jiān)聽某一個(gè)主題對(duì)象。這個(gè)主題對(duì)象在狀態(tài)發(fā)生變化時(shí)混卵,會(huì)通知所有觀察者對(duì)象,使它們能夠自動(dòng)更新自己窖张。將一個(gè)系統(tǒng)分割成一個(gè)一些類相互協(xié)作的類有一個(gè)不好的副作用幕随,那就是需要維護(hù)相關(guān)對(duì)象間的一致性。我們不希望為了維持一致性而使各類緊密耦合宿接,這樣會(huì)給維護(hù)合陵、擴(kuò)展和重用都帶來不便。觀察者就是解決這類的耦合關(guān)系的澄阳。


觀察者模式結(jié)構(gòu)圖



Subject

1 抽象主題(Subject):它把所有觀察者對(duì)象的引用保存到一個(gè)聚集里拥知,每個(gè)主題都可以有任何數(shù)量的觀察者。抽象主題提供一個(gè)接口碎赢,可以增加和刪除觀察者對(duì)象低剔。


Observer

2 抽象觀察者(Observer):為所有的具體觀察者定義一個(gè)接口,在得到主題通知時(shí)更新自己肮塞。


ConcreteSubject

3 具體主題(ConcreteSubject):將有關(guān)狀態(tài)存入具體觀察者對(duì)象襟齿;在具體主題內(nèi)部狀態(tài)改變時(shí),給所有登記過的觀察者發(fā)出通知枕赵。


ConcreteObserver

4 具體觀察者(ConcreteObserver):實(shí)現(xiàn)抽象觀察者角色所要求的更新接口猜欺,以便使本身的狀態(tài)與主題狀態(tài)協(xié)調(diào)。


優(yōu)點(diǎn):觀察者模式解除了主題和具體觀察者的耦合拷窜,讓耦合的雙方都依賴于抽象开皿,而不是依賴具體。從而使得各自的變化都不會(huì)影響另一邊的變化篮昧。

缺點(diǎn):依賴關(guān)系并未完全解除赋荆,抽象通知者依舊依賴抽象的觀察者。


適用場(chǎng)景:1.當(dāng)一個(gè)對(duì)象的改變需要給變其它對(duì)象時(shí)懊昨,而且它不知道具體有多少個(gè)對(duì)象有待改變時(shí)窄潭。

2.一個(gè)抽象某型有兩個(gè)方面,當(dāng)其中一個(gè)方面依賴于另一個(gè)方面酵颁,這時(shí)用觀察者模式可以將這兩者封裝在獨(dú)立的對(duì)象中使它們各自獨(dú)立地改變和復(fù)用嫉你。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市躏惋,隨后出現(xiàn)的幾起案子幽污,更是在濱河造成了極大的恐慌,老刑警劉巖其掂,帶你破解...
    沈念sama閱讀 218,284評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件油挥,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)深寥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門攘乒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人惋鹅,你說我怎么就攤上這事则酝。” “怎么了闰集?”我有些...
    開封第一講書人閱讀 164,614評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵沽讹,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我武鲁,道長(zhǎng)爽雄,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,671評(píng)論 1 293
  • 正文 為了忘掉前任沐鼠,我火速辦了婚禮挚瘟,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘饲梭。我一直安慰自己乘盖,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評(píng)論 6 392
  • 文/花漫 我一把揭開白布憔涉。 她就那樣靜靜地躺著订框,像睡著了一般。 火紅的嫁衣襯著肌膚如雪兜叨。 梳的紋絲不亂的頭發(fā)上穿扳,一...
    開封第一講書人閱讀 51,562評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音浪腐,去河邊找鬼纵揍。 笑死,一個(gè)胖子當(dāng)著我的面吹牛议街,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播璧榄,決...
    沈念sama閱讀 40,309評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼特漩,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了骨杂?” 一聲冷哼從身側(cè)響起涂身,我...
    開封第一講書人閱讀 39,223評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎搓蚪,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,668評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡胆敞,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了揣钦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,981評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡漠酿,死狀恐怖冯凹,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情炒嘲,我是刑警寧澤宇姚,帶...
    沈念sama閱讀 35,705評(píng)論 5 347
  • 正文 年R本政府宣布,位于F島的核電站夫凸,受9級(jí)特大地震影響浑劳,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜夭拌,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評(píng)論 3 330
  • 文/蒙蒙 一魔熏、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧啼止,春花似錦道逗、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至巩那,卻和暖如春吏夯,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背即横。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工噪生, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人东囚。 一個(gè)月前我還...
    沈念sama閱讀 48,146評(píng)論 3 370
  • 正文 我出身青樓跺嗽,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親页藻。 傳聞我的和親對(duì)象是個(gè)殘疾皇子桨嫁,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評(píng)論 2 355

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