回覆列表
  • 1 # 使用者7141197769170

    觀察者(Observer)模式又名釋出-訂閱(Publish/Subscribe)模式。GOF給觀察者模式如下定義:定義物件間的一種一對多的依賴關係,當一個物件的狀態發生改變時,所有依賴於它的物件都得到通知並被自動更新。

    在這裡先講一下面向物件設計的一個重要原則——單一職責原則。因此係統的每個物件應該將重點放在問題域中的離散抽象上。因此理想的情況下,一個物件只做一件事情。這樣在開發中也就帶來了諸多的好處:提供了重用性和維護性,也是進行重構的良好的基礎。

    因此幾乎所有的設計模式都是基於這個基本的設計原則來的。觀察者模式的起源我覺得應該是在GUI和業務資料的處理上,因為現在絕大多數講解觀察者模式的例子都是這一題材。但是觀察者模式的應用決不僅限於此一方面。

    下面我們就來看看觀察者模式的組成部分。

    2) 抽象觀察者角色(Observer):為那些在目標發生改變時需要獲得通知的物件定義一個更新介面。抽象觀察者角色主要由抽象類或者介面來實現。

    3) 具體目標角色(Concrete Subject):將有關狀態存入各個Concrete Observer物件。當它的狀態發生改變時, 向它的各個觀察者發出通知。

    4) 具體觀察者角色(Concrete Observer):儲存有關狀態,這些狀態應與目標的狀態保持一致。實現Observer的更新介面以使自身狀態與目標的狀態保持一致。在本角色內也可以維護一個指向Concrete Subject物件的引用。

  • 中秋節和大豐收的關聯?
  • 重任在肩行難處,奈何無聲作此詩。可有高人知我細情?