觀察者模式

觀察者模式定義

定義對(duì)象之間的一種一對(duì)多依賴關(guān)系,是的每當(dāng)一個(gè)對(duì)象狀態(tài)發(fā)生改變時(shí),期相依賴對(duì)象皆得到通知并被自動(dòng)更新门坷,觀察者模式的名稱把包括訂閱-發(fā)布模式,模型-視圖模式袍镀,源-監(jiān)聽器模式默蚌,或者從屬者模式,觀察者模式是一種行為型模式苇羡。

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

觀察者模式

觀察者模式主要優(yōu)缺點(diǎn)

優(yōu)點(diǎn)
1.觀察者模式可以實(shí)現(xiàn)表示層和數(shù)據(jù)邏輯層的分離绸吸,定義穩(wěn)定消息更新傳遞機(jī)制,并抽象更新接口宣虾。是的可以各種各樣不同的表示層充當(dāng)具體觀察者角色惯裕。
2.觀察者模式的觀察目標(biāo)和觀察者之間建立一種抽象的耦合。觀察者目標(biāo)只需要維持一個(gè)抽象觀察者的集合绣硝,無(wú)須了解其具體觀察者。由于觀察者和觀察目標(biāo)沒有緊密的耦合在一起撑刺,因此他們可以屬于不同抽象化層次鹉胖。
3觀察者模式支持廣播通信,觀察目標(biāo)會(huì)想所有已注冊(cè)的觀察者對(duì)象發(fā)送通知够傍,簡(jiǎn)化一對(duì)多系統(tǒng)設(shè)計(jì)難度甫菠。
4.觀察者模式滿足開閉原則的要求。增加新的具體觀察者無(wú)須修改原有系統(tǒng)代碼冕屯,在具體觀察者與觀察目標(biāo)之間不存在關(guān)聯(lián)關(guān)系的情況下寂诱。增加新的觀察者目標(biāo)也很方便。
缺點(diǎn)
1如果一個(gè)觀察目標(biāo)對(duì)象有很多直接和簡(jiǎn)潔觀察者安聘,將所有觀察者都通知到花費(fèi)很多時(shí)間痰洒。
2 如果在觀察者和觀察目標(biāo)之間存在循環(huán)依賴,觀察目標(biāo)會(huì)出發(fā)他們之間進(jìn)行循環(huán)調(diào)用浴韭∏鹩鳎可能導(dǎo)致系統(tǒng)崩盤
3.觀察者模式?jīng)]有相應(yīng)的機(jī)智讓觀察者知道所觀察目標(biāo)對(duì)象是怎么發(fā)生的變化,而僅僅通知目標(biāo)發(fā)生變化

觀察者模式適用場(chǎng)景

1 一個(gè)抽象模型有兩個(gè)方面念颈,其中一個(gè)方面依賴另一個(gè)方面泉粉,將兩個(gè)方面封裝在獨(dú)立的對(duì)象中使他們可以各自地改變和復(fù)用
2 一個(gè)對(duì)象的變化將導(dǎo)致一個(gè)或者多個(gè)對(duì)象變化,而并不知道具體有多少對(duì)象講發(fā)生變化。也不知道這些對(duì)象是誰(shuí)嗡靡。
3 需要系統(tǒng)中穿件一個(gè)觸發(fā)鏈跺撼,a對(duì)象行為印象B對(duì)象,B對(duì)象的行為將印象C
對(duì)象讨彼。财边。可以使用觀察者穿件一種練市觸發(fā)機(jī)制点骑。

java事件處理中如何使用觀察者模式

當(dāng)一個(gè)具體目標(biāo)產(chǎn)生一個(gè)事件時(shí)酣难,他將通知所有訂閱者。事件的發(fā)布著成為事件源黑滴,而訂閱者成為事件監(jiān)聽器憨募,在這個(gè)過(guò)程中還可以通過(guò)事件對(duì)象來(lái)傳遞與事件相關(guān)的信息≡玻可以在時(shí)間監(jiān)聽者的實(shí)現(xiàn)類中實(shí)現(xiàn)事件處理菜谣,因此事件監(jiān)聽對(duì)象有可以成為事件處理對(duì)象。事件源對(duì)象晚缩、事件監(jiān)聽對(duì)象和事件對(duì)象構(gòu)成java事件處理模式三要素尾膊,事件源從當(dāng)觀察者,而事件監(jiān)聽對(duì)象充當(dāng)觀察者荞彼。

觀察者模式與MVC的關(guān)系

mvc是一種架構(gòu)模式冈敛,包含三個(gè)角色:模型、視圖鸣皂、控制器抓谴。模型可以對(duì)應(yīng)觀察者中的觀察者目標(biāo),而視圖對(duì)應(yīng)于觀察者寞缝,控制器可以充當(dāng)兩者之間的中介者癌压。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市荆陆,隨后出現(xiàn)的幾起案子滩届,更是在濱河造成了極大的恐慌,老刑警劉巖被啼,帶你破解...
    沈念sama閱讀 219,427評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件帜消,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡趟据,警方通過(guò)查閱死者的電腦和手機(jī)券犁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)汹碱,“玉大人粘衬,你說(shuō)我怎么就攤上這事。” “怎么了稚新?”我有些...
    開封第一講書人閱讀 165,747評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵勘伺,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我褂删,道長(zhǎng)飞醉,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,939評(píng)論 1 295
  • 正文 為了忘掉前任屯阀,我火速辦了婚禮缅帘,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘难衰。我一直安慰自己钦无,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評(píng)論 6 392
  • 文/花漫 我一把揭開白布盖袭。 她就那樣靜靜地躺著失暂,像睡著了一般。 火紅的嫁衣襯著肌膚如雪鳄虱。 梳的紋絲不亂的頭發(fā)上弟塞,一...
    開封第一講書人閱讀 51,737評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音拙已,去河邊找鬼决记。 笑死,一個(gè)胖子當(dāng)著我的面吹牛悠栓,可吹牛的內(nèi)容都是我干的霉涨。 我是一名探鬼主播,決...
    沈念sama閱讀 40,448評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼惭适,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了楼镐?” 一聲冷哼從身側(cè)響起癞志,我...
    開封第一講書人閱讀 39,352評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎框产,沒想到半個(gè)月后凄杯,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,834評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡秉宿,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評(píng)論 3 338
  • 正文 我和宋清朗相戀三年戒突,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片描睦。...
    茶點(diǎn)故事閱讀 40,133評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡膊存,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情隔崎,我是刑警寧澤今艺,帶...
    沈念sama閱讀 35,815評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站爵卒,受9級(jí)特大地震影響虚缎,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜钓株,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評(píng)論 3 331
  • 文/蒙蒙 一实牡、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧轴合,春花似錦创坞、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至奔坟,卻和暖如春携栋,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背咳秉。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工婉支, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人澜建。 一個(gè)月前我還...
    沈念sama閱讀 48,398評(píng)論 3 373
  • 正文 我出身青樓向挖,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親炕舵。 傳聞我的和親對(duì)象是個(gè)殘疾皇子何之,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評(píng)論 2 355

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