觀察者設計模式(Observer Design Pattern)

Jc
Oct 14, 2023

Hi 👋 ~ 今天跟大家聊聊觀察者設計模式(Observer Design Pattern) aka「訂閱者模式」。

「記得按讚、訂閱、加分享!!」

我想有看過 YouTube 影片的人對這句話都不陌生,
這樣 YouTuber 在上新片的時候,
我們才能收到新片通知,他們才有點閱率 😅

觀察者設計模式是什麼?

  • 觀察者是一種行爲設計模式
  • 能夠產生「訂閱機制」的功能,發佈者(YouTuber)接受其他物件(觀衆)的訂閱後,讓發佈者(YouTuber)可以發佈通知給有訂閱的對象(觀衆),讓這些對象(觀衆)作出相對應的動作(例如:看新片)

這次我們一樣用個小故事來瞭解觀察者模式吧 🙂

背景設定

這次的主角是財富自由的米其林三星廚師 — 詹姆。

詹姆自從中了樂透之後,
就過著財富自由的人生。
但無所事事又不知道幹嘛,
於是他決定在家鄉開了一間餐廳 。

餐廳的營業時間都是看他心情而定,
有可能一個月都沒有營業也是常有的事情,
因爲他還在巴厘島上度假。

因爲受到媒體報導後,
大家衝著米其林三星的光環慕名而來。
但卻因爲營業時間總是不確定,
所以往往總是撲空,
要吃到詹姆的料理都快要比中樂透的機率還低了 😭

然而詹姆雖然開店的時間很任性,
心底也是個善良的好人,
不想要讓很多客人總是撲空,
於是他開了一個 Line 群組,
請想要收到「今日的營業時間」通知的客人加入這個群組。

這樣就可以在他想到要營業的時候,
在發送訊息通知客人,
就不用在讓他們在外頭苦苦等待了 🎉

以這個故事爲例:

  • 湯姆就是 Publisher 的角色,而客人就是 Subscriber 的角色
  • Subscriber 可以把自己加入 Publisher 的通知清單(Line 群組)
  • Publisher 會通知 Subscriber 事件(今日的營業時間)
  • Subscriber 就會針對這個事情作出相對應的動作(針對營業時間決定是否要到餐廳吃飯或無法參加

那接下來就來到 圈圈工程師 怎麼用程式碼來呈現吧!

--

--