觀察者模式簡介

2021-09-25 19:25:17 字數 1783 閱讀 6436

觀察者模式有四個物件:

(1) 事件源物件: 能發生事件的物件(乙個或多個事件(事件集))

(2)事件物件:事件源發生事件的現場資訊

(3)事件處理物件(介面): 委託給處理的物件

(4)觀察者: 實現類/處理者

事件源必須包括:

1. 私有的監聽者列表

2. 公有的向監聽者列表新增監聽者的方法

3. 做事情的方法(事件方法)

舉個例子: 假如有乙個很漂亮的女孩(事件源物件), 女孩子一般事比較多, 一會渴了, 一會餓了, 一會又不開心了等等(事件物件), 這時有很多男孩要追這個女孩, 那麼他門就是(觀察者/處理者/實現類), 因為你要追人家, 所有你必須無時無刻的觀察這個女孩, 人家餓了, 你趕緊買份飯給她送去. 但這個女生也說了, 只有很帥的男孩才能追我, 不然怎麼能匹配她的絕世容顏, 很帥就是這個事件處理物件(介面), 你必須滿足這個要求去追人家才行, 否則人家都不搭理你! 這個女孩有個小本本(私有的監聽者列表), 上面記錄了所有符合她要求為她做事情的男孩(這件事情又因為害羞不想讓其他人知道所有就是私有的), 你得讓男生向你表白, 有符合條件的男生表白, 這個女孩就往自己的小本本寫上它的名字, (公有的向監聽者列表新增監聽者的方法),女孩到底是渴了還是餓了還是不開心了(做事情的方法(事件方法))

觀察者模式的本質是:觸發聯動

優點:觀察者模式實現了觀察者和目標之間的抽象耦合;

觀察者模式實現了動態聯動

觀察者模式支援廣播通訊

下面請看這個**實現:(熟練了隨便寫,沒順序,初學者建議先寫被調(被別人調的物件),在寫主調)

(1)girlevent(事件物件)

public class girlevent 

public girlevent(string eventstring)

public string geteventstring()

}

(2)girllistener(事件監聽者介面)

public inte***ce girllistener

(3)girl(事件源)

public class girl 

public void grilaction(string actionstring)

}}

(4)處理者

1. aboy(美國男孩)要實現girllistener ,也就是要滿足女孩的要求

public class aboy implements girllistener  else if("不高興了".equals(e.geteventstring())) 

}}

cboy(中國男孩)要實現girllistener ,也就是要滿足女孩的要求

public class cboy implements girllistener else if("不高興了".equals(e.geteventstring()))

} }kboy(南韓男孩)要實現girllistener ,也就是要滿足女孩的要求

public class kboy implements girllistener else if("不高興了".equals(e.geteventstring()))

}}(5)執行類(測試類)

run類:

public class run 

}

隨筆一記!

python觀察者模式 python 觀察者模式

python 觀察者模式 前言e 寫的倉促就不截uml類圖了,書本chapter10,p313能看到圖 一旦觀察的主題有更新,就會通知到觀察者們,下面的例子是最簡單的乙個觀察者範例,假設這是一群投機分子密切關注 軍 火 倉庫的產品與數量變動 class inventory def init self...

觀察者模式

觀察者模式 observer 完美的將觀察者和被觀察的物件分離開。舉個例子,使用者介面可以作為乙個觀察者,業務資料是被觀察者,使用者介面觀察業務資料的變化,發現資料變化後,就顯示在介面上。物件導向設計的乙個原則是 系統中的每個類將重點放在某乙個功能上,而不是其他方面。乙個物件只做一件事情,並且將他做...

觀察者模式

觀察者模式定義了一種一對多的依賴關係,讓多個觀察者物件同時監聽某乙個主題物件。這個主題物件在狀態上發生變化時,會通知所有觀察者物件,讓他們能夠自動更新自己 任何乙個模式都是離不開角色的,這裡也會有幾種角色 抽象主題角色 把所有對觀察者物件的引用儲存在乙個集合中,每個抽象主題角色都可以有任意數量的觀察...