觀察者模式

觀察者模式:

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

  解決問題:解決多個對象間相互依賴關係的相互通知。

  常用地方:一些數據有多個視圖的表示,譬如Java中自帶的圖形事件應用。

  用途:觀察者模式通常與 MVC 範式有關係。在 MVC 中,觀察者模式被用來降低 model 與 view 的耦合程度。一般而言, model 的改變會觸發通知其他身爲觀察者的 model 。而這些 model 實際上是 view 。 Java Swing 就是個範例,示意了 model 預期會透過 PropertyChangeNotification 架構以送出改變的通知給其他 view 。 Model 類別是 Java bean 類別的一員,並擁有與上述目標類別同樣的行爲。 View 類別則繫結了一些 GUI 中的可視元素,並擁有與上述觀察者類別同樣的行爲。當應用程式在執行時。使用者將因 view 做出相應的更新而看見 model 所產生的變更。

    例子一:
  
  爲了管理一個賣廠多個分類產品,讓我們建立一個銷售報表系統。這個系統有以下特徵:
  
  (1)用戶可以選擇一個他們感興趣的分類
  
  (2)在選擇了一個分類以後,需要顯示下面的兩種類型的報表。
  
  A、月度報表(Monthly report)--所選分類當月的所有交易清單。
  
  B、年度累積額(YTD sales chart)--以月爲單位顯示選擇分類的年度累積額圖。
  
  (3)當一個不同的分類被選擇時,兩種報表的數據會被刷新,顯示當前所選分類的報表。

    例子二:
    觀察者定義了對象間一對多的關係,當一個對象的狀態變化時,所有依賴它的對象都得到通知並且自動地更新。拍賣演示了這種模式。每    個投標人都有一個標有數字的牌子用於出價。拍賣師開始拍賣時,他觀察是否有牌子舉起出價。每次接受一個新的出價都改變了拍賣的當    前價格,並且廣播給所有的投標人進行新的出價。

    在項目中怎麼使用:在MVC模式中的mode層(業務邏輯層)裏面的數據發生改變的話(mode也就是被觀察者),那麼依賴於它的那些觀察者,也就是視圖層也會跟着發生改變。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章