觀察者模式有四個物件:
(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 完美的將觀察者和被觀察的物件分離開。舉個例子,使用者介面可以作為乙個觀察者,業務資料是被觀察者,使用者介面觀察業務資料的變化,發現資料變化後,就顯示在介面上。物件導向設計的乙個原則是 系統中的每個類將重點放在某乙個功能上,而不是其他方面。乙個物件只做一件事情,並且將他做...
觀察者模式
觀察者模式定義了一種一對多的依賴關係,讓多個觀察者物件同時監聽某乙個主題物件。這個主題物件在狀態上發生變化時,會通知所有觀察者物件,讓他們能夠自動更新自己 任何乙個模式都是離不開角色的,這裡也會有幾種角色 抽象主題角色 把所有對觀察者物件的引用儲存在乙個集合中,每個抽象主題角色都可以有任意數量的觀察...