您好,登錄后才能下訂單哦!
本篇內容介紹了“java觀察者模式是什么”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
觀察者模式(Observer),又叫發布-訂閱模式(Publish/Subscribe),定義對象間一種一對多的依賴關系,使得每當一個對象改變狀態,則所有依賴于它的對象都會得到通知并自動更新。UML結構圖如下:
舉個例子:就比如是 天氣觀測站和氣象報告板的關系。但報告板想獲取觀測站的數據,可以注冊加入到觀測站的觀察者列表中,這就可以使觀測站有數據更新時,自動傳給氣象報告板。
WeatherData 相當于氣象觀測站 和 觀察者的 一個中介。WeatherData 獲取來自氣象觀測站的數據后,向觀察者發送數據。
觀察者模式的主要角色如下:
抽象主題(Subject)角色:也叫抽象目標類,它提供了一個用于保存觀察者對象的聚集類和增加、刪除觀察者對象的方法,以及通知所有觀察者的抽象方法。
具體主題(Concrete Subject)角色:也叫具體目標類,它實現抽象目標中的通知方法,當具體主題的內部狀態發生改變時,通知所有注冊過的觀察者對象。
抽象觀察者(Observer)角色:它是一個抽象類或接口,它包含了一個更新自己的抽象方法,當接到具體主題的更改通知時被調用。
具體觀察者(Concrete Observer)角色:實現抽象觀察者中定義的抽象方法,以便在得到目標的更改通知時更新自身的狀態。
優點:
降低了目標與觀察者之間的耦合關系,兩者之間是抽象耦合關系。
目標與觀察者之間建立了一套觸發機制。
缺點:
如果一個被觀察者對象有很多的直接和間接的觀察者的話,將所有的觀察者都通知到會花費很多時間 。
目標與觀察者之間的依賴關系并沒有完全解除,而且有可能出現循環引用 。
“java觀察者模式是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。