觀察者模式 行為

2022-03-06 09:12:58 字數 1197 閱讀 4468

當物件間存在一對多關係時,則使用觀察者模式(observer pattern)。比如,當乙個物件被修改時,則會自動通知依賴它的物件。觀察者模式屬於行為型模式。

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

主要解決:乙個物件狀態改變給其他物件通知的問題,而且要考慮到易用和低耦合,保證高度的協作。

何時使用:乙個物件(目標物件)的狀態發生改變,所有的依賴物件(觀察者物件)都將得到通知,進行廣播通知。

核心:就是把所有觀察者都存在乙個公共的變數裡面,然後某乙個狀態傳送變更時,從公共的變數裡面取出所有觀察者,然後呼叫觀察者預先實現的方法。

/**

* 觀察者模式

* * 場景:當天氣更新以後,動態的去通知所有關注天氣預報的人

* * * 參考:

* *

@author

zls * @date 2020/6/18 */

public

class

observerdemo

}/**

* 被觀察者介面 */

@data

abstract

class

person

/*** 建立實體觀察者類 */

class male extends

person

@override

public

void

receive()

}class female extends

person

@override

public

void

receive()

}/**

* 主題 */

class

weathersubject

public

void

setstate(string state)

/*** 將所有關注天氣預報的人儲存起來

* @param

person

*/public

void

attach(person person)

/*** 通知所有的觀察者

*/public

void

notifyallobservers()

}}

參考:觀察者模式

行為模式(觀察者模式)

觀察者模式,也稱發布 訂閱模式,定義了乙個被觀察者和多個觀察者的 一對多的物件關係。在被觀察者狀態發生變化的時候,它的所有觀察者都會收到通知,並自動更新。觀察者模式通常用在實時事件處理系統 元件間解耦 資料庫驅動的訊息佇列系統,同時也是mvc設計模式中的重要組成部分。以下我們以訂單建立為例。當訂單建...

行為模式 觀察者 模式

觀察者模式應用比較廣泛,又被稱為 發布 訂閱 模式。它用來定義物件間一種一對多的依賴關係,當乙個物件的狀態發生變化時,所有依賴它的物件都得到通知並被自動更新。觀察者模式的角色有 抽象主題 具體主題 發布者 抽象觀察者和具體觀察者 訂閱者 from abc import abcmeta,abstrac...

Observer 觀察者 行為模式

observer 觀察者 行為模式,定義物件的一對多的依賴關係,當乙個物件的狀態發生改變時,所有依賴於該物件的物件都會得到通知並被自動更新。observe模式也很好理解,恩,像flash中的事件偵聽,像rss,向報紙的訂閱。我拿puremvc來舉例吧,puremvc是跨語言的,現在已經支援很多種語言...