觀察者模式(Observer)

2021-06-25 12:06:13 字數 1139 閱讀 9258

觀察者模式的意圖:在多個物件之間定義一對多的依賴關係,當乙個物件的狀態改變時,會通知依賴於它的物件,並根據新狀態做出相應的反應

觀察者模式也被稱為:發布訂閱模式(publish-subscribe)、模型檢視模式(model-view)、源-監聽模式(source/listener)

觀察者模式的uml圖如下:

其中有四個角色:

subject:抽象主題把所有觀察者的引用存入其聚集中,每個主題可以有任意個觀察者,並且主題中有方法可以增刪觀察者,抽象主題也被稱為抽象被觀察者

concretesubject:具體主題把用於儲存主題狀態,當相應的狀態發生變化時,通知所有註冊過的具體觀察者,具體主題也被稱為具體被觀察者

observer:為所有觀察者定義乙個介面,在得到主題的更新時通知自己,也被稱為更新介面

concreteobserver:具體觀察者實現抽象觀察者的介面,並且與主題物件的狀態保持一致,有必要可以儲存乙個指向主題物件的引用

下面我們舉乙個例子用於說明觀察者模式的使用:

// 觀察者介面

inte***ce observer

//具體觀察者

class concreteobserver implements observer

}//抽象主題

abstract class observable

//刪除觀察者

public void detach(observer o)

//通知觀察者

public void notifyobservers(string state) }}

//具體主題

class concretesubject extends observable

//狀態改變,通知觀察者

public void change(string newstate)

}public class observerpattern

}

觀察者模式 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 的框架敬佩有佳。不知道這其中隱藏了多少未知...