觀察者模式 Observer

2022-03-23 10:09:30 字數 805 閱讀 6217

定義物件間的一種一對多的依賴關係。當乙個物件的狀態發生改變時,所有依賴於它的物件都得到通知並被自動更新。

觀察者模式又被稱為發布-訂閱模式(publish-subscribe)。

對於乙個目標物件,其觀察者可以是多個,當然也可以只有乙個。

subject(目標介面)、concretesubject(具體的目標)

1.乙個目標物件可以被多個觀察者觀察

2.目標物件可以註冊(register)和退訂(remove)觀察者

3.當目標的狀態發生改變時,目標負責通知所有註冊的、有效的觀察者。

observer(觀察者)、concreteobserver(具體的觀察者)

1.能夠儲存註冊的觀察者物件(具有乙個容器)

2.提供註冊和刪除觀察者的方法(註冊觀察者和刪除觀察者方法)

3.能夠通知所有註冊的觀察者物件(提供乙個通知方法)

目標物件要維持乙個觀察者的列表,因為只有這樣,當目標物件發生改變時,才能對註冊的觀察者進行通知。

由於觀察者模式應用的非常廣泛,所以jdk提供了內建的支援。但是許多時候,自己建立這一切會更具有彈性(況且建立這一切並不是很麻煩)

推模式(push)和拉模式(pull)

……更多設計模式的內容,可以訪問refactoring.guru

觀察者模式 Observer

個人理解 觀察者模式的核心是subject的attach和detach方法,載入observer物件 uml類圖 實現 public abstract class subject public void detach observer observer public void notify publ...

觀察者模式 ObServer

觀察者模式 observer 定義物件間的一種一對多的依賴關係,當乙個物件的狀態發生改變時,所有依賴於它的物件都得到通知並被自動更新 觀察者模式 observer 觀察者模式定義了一對多依賴關係,讓多個觀察者物件同時監聽某乙個主題物件。讓主題物件在狀態發生變化時,會通知所有觀察者物件,讓他們能夠自動...

觀察者模式(OBSERVER)

觀察者模式是我選擇將其列出來的第乙個模式。看了這個模式的概念之後,有種豁然開朗的感覺。工作也由實踐上公升到了理論。平時使用的各種 net 控制項都使用了這種模式,將這種模式應用到組成乙個系統的各個元件中去,怎乙個 妙 字了得。理解了它之後,不竟又對 net 的框架敬佩有佳。不知道這其中隱藏了多少未知...