設計模式 觀察者模式(Observer)

觀察者模式:在對象之間定義了一對多的依賴,這樣一來,當一個對象改變狀態,依賴它的對象會收到通知並自動更新。觀察者模式是關於多個對象想知道一個對象中數據變化狀況的一種成熟的模式。觀察者模式中有一個稱做「主題」的對象和若干個稱做「觀察者」的對象,「主題」和「觀察者」間是一種一對多的依賴關係,當「主題」的狀態發生變化時,全部「觀察者」都獲得通知。前面所述的「求職中心」至關於觀察者模式的一個具體「主題」;每一個「求職者」至關於觀察者模式中的一個具體「觀察者」。這種類型的設計模式屬於行爲型模式設計模式

觀察者模式的結構中包含四種角色:spa

  • 主題(Subject):主題是一個接口,該接口規定了具體主題須要實現的方法,好比,添加、刪除觀察者以及通知觀察者更新數據的方法。
  • 觀察者(Observer):觀察者是一個接口,該接口規定了具體觀察者用來更新數據的方法。
  • 具體主題(ConcreteSubject):具體主題是實現主題接口類的一個實例,該實例包含有能夠常常發生變化的數據。具體主題需使用一個集合,好比ArrayList,存放觀察者的引用,以便數據變化時通知具體觀察者。
  • 具體觀察者(ConcreteObserver):具體觀察者是實現觀察者接口類的一個實例。具體觀察者包含有能夠存放具體主題引用的主題接口變量,以便具體觀察者讓具體主題將本身的引用添加到具體主題的集合中,使本身成爲它的觀察者,或讓這個具體主題將本身從具體主題的集合中刪除,使本身再也不是它的觀察者。

應用場景設計

當一個對象的數據更新時須要通知其餘對象,但這個對象又不但願和被通知的那些對象造成緊耦合。
當一個對象的數據更新時,這個對象須要讓其餘對象也各自更新本身的數據,但這個對象不知道具體有多少對象須要更新數據。server

相關文章
相關標籤/搜索