觀察者模式解析

定義:對(duì)象間的一種一對(duì)多的依賴關(guān)系,使得當(dāng)每一個(gè)對(duì)象改變狀態(tài),則所有依賴于他的對(duì)象都會(huì)得到通知,并自動(dòng)更新。

觀察者模式設(shè)計(jì)要點(diǎn)

交互對(duì)象之間松耦合
1)觀察者定義了對(duì)象之間一對(duì)多的關(guān)系
2)被觀察者用一個(gè)共同的接口來更新觀察者
3)觀察者和被觀察者用松耦合方式結(jié)合,被觀察者不知道觀察者的細(xì)節(jié),只知道觀察者實(shí)現(xiàn)了觀察者接口

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

優(yōu)點(diǎn):
1)觀察者與被觀察者抽象耦合,容易擴(kuò)展;
2)建立了一套觸發(fā)機(jī)制。
缺點(diǎn):
1)循環(huán)依賴會(huì)導(dǎo)致系統(tǒng)崩潰;
2)觀察者太多會(huì)浪費(fèi)時(shí)間。

觀察者模式解決的問題

1)定義對(duì)象之間的一對(duì)多依賴關(guān)系而不使對(duì)象緊密耦合。
2)確保當(dāng)一個(gè)對(duì)象改變狀態(tài)時(shí),自動(dòng)更新開放數(shù)量的從屬對(duì)象。
3)一個(gè)對(duì)象應(yīng)該可以通知開放式數(shù)量的其他對(duì)象。

觀察者模式的UML圖

觀察者模式uml圖

搶票監(jiān)聽

時(shí)序圖

參考文獻(xiàn)

觀察者模式 vs 發(fā)布-訂閱模式
觀察者模式(Observer)
如何使用 Java8 實(shí)現(xiàn)觀察者模式?(上)
如何使用 Java8 實(shí)現(xiàn)觀察者模式?(下)

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

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

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