最近專案中遇到乙個需求:在伺服器進行一次排程以後,要給客戶端乙個通知,而客戶端在呼叫服務端的排程之前會進行通知的註冊。這是乙個典型的observer模式,因此順便將觀察者模式再複習了一次,這個模式其實就只涉及到主題和觀察者兩個類,也相對比較簡單,uml類圖如下:
順序圖:
有了這兩個圖,觀察者模式就一目了然了,這裡在講hf上面的對應的設計原則貼上來:
1找出程式中會變化的方面,然後將和固定不變的方面相分離--->在觀察者模式中,會改變的是主題的狀態,以及觀察者的數目和型別。用這個模式,你可以改變依賴於主題狀態的物件,卻不必改變主題,這就叫提前規劃!
2針對介面程式設計,不針對實現程式設計-->主題和觀察者都是用介面:觀察者利用主題的介面向主題註冊,而主題利用觀察者介面通知觀察者。這樣可以讓兩者之間運作正常,又同時具有松耦合的優點。
3多用組合,少用繼承-->觀察者模式利用「組合」將許多觀察者組合進主題中,物件之間的這種關係不是通過繼承產生的,而是在執行時利用組合的方式而產生的。
設計模式 行為型模式 Observer模式
定義物件間的一種一對多的依賴關係,當乙個物件的狀態發生改變時,所有依賴於它的物件都得到通知並被自動更新 缺點 注意事項 observer.hpp ifndef subject h define subject h include include include using namespace std...
行為型模式之觀察者OBSERVER
當乙個物件的狀態發生改變時,所以依賴它的物件都會得到通知並被自動更新。在excel中,當資料變化時,與資料對應的 和圖形都會隨之變化。這就需要資料在變化時自行通知其的依賴類,隨之改變。如圖subject物件維持乙個依賴它的觀察物件表,當subject內容發生變化,需要通知觀察者時就會呼叫觀察者物件的...
Observer 觀察者 行為模式
observer 觀察者 行為模式,定義物件的一對多的依賴關係,當乙個物件的狀態發生改變時,所有依賴於該物件的物件都會得到通知並被自動更新。observe模式也很好理解,恩,像flash中的事件偵聽,像rss,向報紙的訂閱。我拿puremvc來舉例吧,puremvc是跨語言的,現在已經支援很多種語言...