observer

故障診斷工具

Observer是支持乙太網, Wireless 802.11b/a/g, Token Ring 和 FDDI 網路環境的網路監控和協議分析產品。Observer對於共享和交換式網路環境都提供測試、捕捉和趨勢分析功能。

Observer 是一款經濟的、純軟體和支持Microsoft Windows系統的監控和故障診斷工具。 Observer 既可以監控單一的LANs/802.11網段,也可以配合探針,使Observer升級為一款監控多個LANs/WANs/802.11a/b/g 網段和廣域網的的全分散式產品。 Observer提供實時監控和故障診斷能力,以及全面的趨勢分析和基準收集系統用來分析日積月累的歷史數據。

診斷工具


Observer能夠被升級為Expert Observer和Observer Suite來跟蹤多個SNMP設備,查看任何來自RMON1/2或HCRMON探針的數據,提供專家分析和建模功能,或顯示基於Web的報表。Observer產品系列能夠提供一個針對即使最複雜的LAN/802.11/WAN/Gigabit網路環境的管理解決方案。

設計模式


定義

觀察者模式又叫做發布-訂閱(Publish/Subscribe)模式、模型-視圖(Model/View)模式、源-監聽器(Source/Listener)模式或從屬者(Dependents)模式。
觀察者模式定義了一種一對多的依賴關係,讓多個觀察者對象同時監聽某一個主題對象。這個主題對象在狀態上發生變化時,會通知所有觀察者對象,使它們能夠自動更新自己。
一個軟體系統常常要求在某一個對象的狀態發生變化的時候,某些其它的對象做出相應的改變。做到這一點的設計方案有很多,但是為了使系統能夠易於復用,應該選擇低耦合度的設計方案。減少對象之間的耦合有利於系統的復用,但是同時設計師需要使這些低耦合度的對象之間能夠維持行動的協調一致,保證高度的協作(Collaboration)。觀察者模式是滿足這一要求的各種設計方案中最重要的一種。

類圖

可以看出,在這個觀察者模式的實現里有下面這些角色:
抽象主題(Subject)角色:主題角色把所有對觀察者對象的引用保存在一個聚集里,每個主題都可以有任何數量的觀察者。抽象主題提供一個介面,可以增加和刪除觀察者對象,主題角色又叫做抽象被觀察者(Observable)角色,一般用一個抽象類或者一個介面實現。抽象觀察者(Observer)角色:為所有的具體觀察者定義一個介面,在得到主題的通知時更新自己。這個介面叫做更新介面。抽象觀察者角色一般用一個抽象類或者一個介面實現。在這個示意性的實現中,更新介面只包含一個方法(即Update()方法),這個方法叫做更新方法。
具體主題(ConcreteSubject)角色:將有關狀態存入具體現察者對象;在具體主題的內部狀態改變時,給所有登記過的觀察者發出通知。具體主題角色又叫做具體被觀察者角色(Concrete Observable)。具體主題角色通常用一個具體子類實現。
具體觀察者(ConcreteObserver)角色:存儲與主題的狀態自恰的狀態。具體現察者角色實現抽象觀察者角色所要求的更新介面,以便使本身的狀態與主題的狀態相協調。如果需要,具體現察者角色可以保存一個指向具體主題對象的引用。具體觀察者角色通常用一個具體子類實現。
從具體主題角色指向抽象觀察者角色的合成關係,代表具體主題對象可以有任意多個對抽象觀察者對象的引用。之所以使用抽象觀察者而不是具體觀察者,意味著主題對象不需要知道引用了哪些ConcreteObserver類型,而只知道抽象Observer類型。這就使得具體主題對象可以動態地維護一系列的對觀察者對象的引用,並在需要的時候調用每一個觀察者共有的Update()方法。這種做法叫做"針對抽象編程"。