觀察者模式的意圖:在多個物件之間定義一對多的依賴關係,當乙個物件的狀態改變時,會通知依賴於它的物件,並根據新狀態做出相應的反應
觀察者模式也被稱為:發布訂閱模式(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 的框架敬佩有佳。不知道這其中隱藏了多少未知...