當物件間存在一對多關係時,則使用觀察者模式(observer pattern)。比如,當乙個物件被修改時,則會自動通知它的依賴物件。觀察者模式屬於行為型模式。
1、拍賣的時候,拍賣師觀察最高標價,然後通知給其他競價者競價。
2、西遊記裡面悟空請求菩薩降服紅孩兒,菩薩灑了一地水招來乙個老烏龜,這個烏龜就是觀察者,他觀察菩薩灑水這個動作。
觀察者模式使用三個類 subject、observer 和 client。
subject 物件帶有繫結觀察者到 client 物件和從 client 物件解綁觀察者的方法。我們建立 subject 類、observer 抽象類和擴充套件了抽象類 observer 的實體類。
//建立 subject 類。
public
class subject
public
void
setstate(int state)
public
void
attach(observer observer)
public
void
notifyallobservers()}}
//建立 observer 類。
public
abstract
class observer
//建立實體觀察者類。
public
class
binaryobserver
extends
observer
@override
public
void
update()
}
//建立實體觀察者類。
public
class
octalobserver
extends
observer
@override
public
void
update()
}
//建立實體觀察者類。
public
class
hexaobserver
extends
observer
@override
public
void
update()
}
//使用 subject 和實體觀察者物件。
public
class observerpatterndemo
}
輸出結果:
first state change:15
hex string:f
octal string:17
binary string:1111
second state change:10
hex string:a
octal string:12
binary string:1010
軟體設計模式 觀察者模式
參考 定義了一種一對多的依賴關係,讓多個觀察者物件監聽某乙個主題物件。這個主題物件在狀態發生變化時,會通知所有觀察者物件,使它們能夠自動更新自己。include observer.h include include using namespace std observer observer obse...
軟體設計模式之觀察者模式
軟體設計模式我的個人理解 1.寫過的東西不要重複寫,浪費人力,畢竟現在都提倡低碳環保。2.軟體不是搬磚,一層一層不停的壘上去,那是苦力,善於發現共通的地方,模組化拼接。3.軟體不是寫給自己的,大家一起要能看,這是全人類的財富,符合統一規範,也要別人能理解你,更輕鬆的理解你。觀察者模式 首先把其他小名...
python 設計模式 觀察者 觀察者設計模式
在觀察者設計模式這種模式中,物件被表示為等待事件觸發的觀察者。一旦發生指定的事件,觀察者就會關注該主體。當事件發生時,主體告訴觀察者它已經發生。以下uml圖表示觀察者模式 如何實現觀察者模式?現在讓我們來看看如何實現觀察者模式。參考以下實現 import threading import time ...