iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 26
1

本文同步更新於blog

Observer Pattern

在對象之間定義一對多的依賴

當一個對象改變狀態,依賴它的對象都會收到通知,並自動更新。

亦被稱作發佈/訂閱模式 (Publish/Subscribe Pattern)


觀察者模式會將類別分為兩類:
分別是主題類別 (Subject)觀察者類別 (Observer)

透過增加/移除名單中的觀察者,來控制主題類別改變時,
要通知的對象有哪些。


優點:
透過定義好的主題介面與觀察者介面,
將主題類別與觀察者類別的關係解耦。

即主題類別不需要知道真正的觀察者是誰,
而觀察者類別也不需要知道到底是誰通知它的。

缺點:
會使程式碼變得複雜。
觀察者類別中的方法名稱必須一致(可以用事件委託技術修正)
若觀察者訂閱多個主題時,無法決定被通知的順序


與其他模式的比較:

[命令模式]:
命令模式中,調用者發送命令給接收者,由接收者決定是否執行命令
觀察者模式中,主題發送通知給觀察者後,由觀察者自行決定要執行的行動


經常運用在實時事件系統。
程式中有「通知」兩字的行為,很可能是它的應用時機。

ʕ •ᴥ•ʔ:又是個日常生活中就會看到的模式。


上一篇
Day25. 範例:會員制(狀態模式)
下一篇
Day27. 範例:Line群組通知(觀察者模式)
系列文
你終究都要學設計模式的,那為什麼不一開始就學呢?57
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言