Hi 👋 ~ 今天跟大家聊聊觀察者設計模式(Observer Design Pattern) aka「訂閱者模式」。
「記得按讚、訂閱、加分享!!」
我想有看過 YouTube 影片的人對這句話都不陌生,
這樣 YouTuber 在上新片的時候,
我們才能收到新片通知,他們才有點閱率 😅
觀察者設計模式是什麼?
- 觀察者是一種行爲設計模式
- 能夠產生「訂閱機制」的功能,發佈者(YouTuber)接受其他物件(觀衆)的訂閱後,讓發佈者(YouTuber)可以發佈通知給有訂閱的對象(觀衆),讓這些對象(觀衆)作出相對應的動作(例如:看新片)
這次我們一樣用個小故事來瞭解觀察者模式吧 🙂
背景設定
這次的主角是財富自由的米其林三星廚師 — 詹姆。
詹姆自從中了樂透之後,
就過著財富自由的人生。
但無所事事又不知道幹嘛,
於是他決定在家鄉開了一間餐廳 。
餐廳的營業時間都是看他心情而定,
有可能一個月都沒有營業也是常有的事情,
因爲他還在巴厘島上度假。
因爲受到媒體報導後,
大家衝著米其林三星的光環慕名而來。
但卻因爲營業時間總是不確定,
所以往往總是撲空,
要吃到詹姆的料理都快要比中樂透的機率還低了 😭
然而詹姆雖然開店的時間很任性,
心底也是個善良的好人,
不想要讓很多客人總是撲空,
於是他開了一個 Line 群組,
請想要收到「今日的營業時間」通知的客人加入這個群組。
這樣就可以在他想到要營業的時候,
在發送訊息通知客人,
就不用在讓他們在外頭苦苦等待了 🎉
以這個故事爲例:
- 湯姆就是
Publisher
的角色,而客人就是Subscriber
的角色 Subscriber
可以把自己加入Publisher
的通知清單(Line 群組)Publisher
會通知Subscriber
事件(今日的營業時間)Subscriber
就會針對這個事情作出相對應的動作(針對營業時間決定是否要到餐廳吃飯或無法參加
那接下來就來到 圈圈工程師 怎麼用程式碼來呈現吧!