設計模式入門:觀察者模式 Observer Pattern

更新 發佈閱讀 1 分鐘

今天你訂閱了喜歡的 YouTube 頻道。每當這個頻道上傳新影片時,你都會馬上收到通知,完全不需要主動去檢查頻道更新。在軟體開發中,我們常常需要處理類似的情況:當某個物件的狀態發生變化時,其他相關的物件會自動接收到通知,並做出相應的動作。這種場景正是可以運用觀察者模式 Observer Pattern 的地方。


觀察者模式是什麼?

觀察者模式是一種設計模式,用來處理「一對多」的依賴關係。簡單來說,當某個物件(被觀察者)改變時,所有依賴它的物件(觀察者)會自動收到通知,並更新自己。這樣的設計能讓系統中的各個部分保持靈活性,減少不必要的耦合,讓程式碼更容易擴展和維護。


在生活中,觀察者模式的應用比比皆是。例如:YouTube 訂閱、股票價格波動通知、天氣更新推播、電子報的發布與通知,都在背後使用了觀察者模式。每次狀態改變時,系統自動通知所有相關的使用者或服務,讓我們不用再手動查詢,方便又效率。


總結一下,觀察者模式是一個很實用的工具,特別適合用來處理那些需要多個物件之間互相通知和更新的情境。當你在開發中遇到類似需求時,不妨考慮使用觀察者模式,讓你的程式更加靈活和易於維護!


實際C++範例,可以參考我今年在iThome鐵人賽的文章
https://ithelp.ithome.com.tw/articles/10346564

留言
avatar-img
留言分享你的想法!
avatar-img
ShengYu的沙龍
6會員
83內容數
對於經營自媒體、部落格或社群媒體感興趣?我專注於提供實用的寫作技巧、數位行銷策略,以及個人成長建議。 每週,我會分享提升寫作技巧、優化部落格經營、有效管理社群媒體、以及投資理財的寶貴知識。追蹤我,獲得實用的工具和建議,讓你的個人品牌和財務管理更上一層樓!
ShengYu的沙龍的其他內容
2024/10/01
最近看到許多有關職場的文章,讓我感觸良多,也想分享一些想法。 當公司遇到財務問題時,裁員往往是最直接的方法。這時候無論你是公司創始元老,還是奉獻多年的資深員工,公司都只看數字。薪水高的、資深的員工,常常會是第一批被裁的對象。 你也許會想:「我對公司有那麼多貢獻,為什麼還會被裁?」但現實是
2024/10/01
最近看到許多有關職場的文章,讓我感觸良多,也想分享一些想法。 當公司遇到財務問題時,裁員往往是最直接的方法。這時候無論你是公司創始元老,還是奉獻多年的資深員工,公司都只看數字。薪水高的、資深的員工,常常會是第一批被裁的對象。 你也許會想:「我對公司有那麼多貢獻,為什麼還會被裁?」但現實是
2024/09/30
在職場上,許多人都會面臨不快樂的情境,可能是因為壓力、工作與生活不平衡、或是缺乏成就感。你是不是也有過這樣的感覺?今天我想分享我最近看到一個成功人士在職場上讓工作變得更快樂的方法與心態轉變的秘訣。 主動爭取機會,掌握主動權 在職場中,最不快樂的感覺往往來自於被動接受工作。如果你總是被丟一堆工
2024/09/30
在職場上,許多人都會面臨不快樂的情境,可能是因為壓力、工作與生活不平衡、或是缺乏成就感。你是不是也有過這樣的感覺?今天我想分享我最近看到一個成功人士在職場上讓工作變得更快樂的方法與心態轉變的秘訣。 主動爭取機會,掌握主動權 在職場中,最不快樂的感覺往往來自於被動接受工作。如果你總是被丟一堆工
2024/09/29
軟體開發中,我們經常會遇到各種令人抓狂的設計問題。有時候是趕進度的壓力讓我們妥協了設計質量;有時候是忽略了好的設計原則,結果掉進了各種反模式的坑裡。今天我們來繼續聊聊幾個常見的反模式。 寫死 Hard Code 直接將資料值或邏輯硬寫死在程式碼裡,當需求變更時,修改這些 Hard Code
2024/09/29
軟體開發中,我們經常會遇到各種令人抓狂的設計問題。有時候是趕進度的壓力讓我們妥協了設計質量;有時候是忽略了好的設計原則,結果掉進了各種反模式的坑裡。今天我們來繼續聊聊幾個常見的反模式。 寫死 Hard Code 直接將資料值或邏輯硬寫死在程式碼裡,當需求變更時,修改這些 Hard Code
看更多
你可能也想看
Thumbnail
透過蝦皮分潤計畫,輕鬆賺取零用金!本文分享5-6月實測心得,包含數據流程、實際收入、平臺優點及注意事項,並推薦高分潤商品,教你如何運用空閒時間創造被動收入。
Thumbnail
透過蝦皮分潤計畫,輕鬆賺取零用金!本文分享5-6月實測心得,包含數據流程、實際收入、平臺優點及注意事項,並推薦高分潤商品,教你如何運用空閒時間創造被動收入。
Thumbnail
單身的人有些會養寵物,而我養植物。畢竟寵物離世會傷心,植物沒養好再接再厲就好了~(笑)
Thumbnail
單身的人有些會養寵物,而我養植物。畢竟寵物離世會傷心,植物沒養好再接再厲就好了~(笑)
Thumbnail
不知你有沒有過這種經驗?衛生紙只剩最後一包、洗衣精倒不出來,或電池突然沒電。這次一次補貨,從電池、衛生紙到洗衣精,還順便分享使用心得。更棒的是,搭配蝦皮分潤計畫,愛用品不僅自己用得安心,分享給朋友還能賺回饋。立即使用推薦碼 X5Q344E,輕鬆上手,隨時隨地賺取分潤!
Thumbnail
不知你有沒有過這種經驗?衛生紙只剩最後一包、洗衣精倒不出來,或電池突然沒電。這次一次補貨,從電池、衛生紙到洗衣精,還順便分享使用心得。更棒的是,搭配蝦皮分潤計畫,愛用品不僅自己用得安心,分享給朋友還能賺回饋。立即使用推薦碼 X5Q344E,輕鬆上手,隨時隨地賺取分潤!
Thumbnail
身為一個典型的社畜,上班時間被會議、進度、KPI 塞得滿滿,下班後只想要找一個能夠安靜喘口氣的小角落。對我來說,畫畫就是那個屬於自己的小樹洞。無論是胡亂塗鴉,還是慢慢描繪喜歡的插畫人物,那個專注在筆觸和色彩的過程,就像在幫心靈按摩一樣,讓緊繃的神經慢慢鬆開。
Thumbnail
身為一個典型的社畜,上班時間被會議、進度、KPI 塞得滿滿,下班後只想要找一個能夠安靜喘口氣的小角落。對我來說,畫畫就是那個屬於自己的小樹洞。無論是胡亂塗鴉,還是慢慢描繪喜歡的插畫人物,那個專注在筆觸和色彩的過程,就像在幫心靈按摩一樣,讓緊繃的神經慢慢鬆開。
Thumbnail
昨天這篇文章,其實我是同步在想基金存股定期定額的相關內容(什麼奇怪放在一起想),而且同時重新編輯 #黑力 的講義(大翻新啊⋯⋯),這禮拜講到 #復購回購 這件事情。而這幾年重大的商業模式變革(也不能算變革啦)就是 #訂閱制
Thumbnail
昨天這篇文章,其實我是同步在想基金存股定期定額的相關內容(什麼奇怪放在一起想),而且同時重新編輯 #黑力 的講義(大翻新啊⋯⋯),這禮拜講到 #復購回購 這件事情。而這幾年重大的商業模式變革(也不能算變革啦)就是 #訂閱制
Thumbnail
我近期頻繁地使用Twitter,是因為想要研究產品開發的資訊,而不是看其他的無關訊息。​ ​但是我發現以前不小心追蹤了太多其他領域的資訊,導致動態牆變得很混雜,閱讀體驗變得很差。​ ​不過我後來研究出了幾個步驟,可以確保動態牆有更多想要的內容。​ 基本上​只要採取以下四個步驟,就能讓看到滿滿的
Thumbnail
我近期頻繁地使用Twitter,是因為想要研究產品開發的資訊,而不是看其他的無關訊息。​ ​但是我發現以前不小心追蹤了太多其他領域的資訊,導致動態牆變得很混雜,閱讀體驗變得很差。​ ​不過我後來研究出了幾個步驟,可以確保動態牆有更多想要的內容。​ 基本上​只要採取以下四個步驟,就能讓看到滿滿的
Thumbnail
前幾天在Youtube聽書,聽到這本「上游思維」其中後段提到 「正視系統的複雜性,指的就是我們需要多花些時間,#整體的、#關聯的、#動態的,思考問題而不僅僅侷限於那個從一開始吸引我們的具體問題」 ​ 有這個概念可以幫助更理解人類圖系統
Thumbnail
前幾天在Youtube聽書,聽到這本「上游思維」其中後段提到 「正視系統的複雜性,指的就是我們需要多花些時間,#整體的、#關聯的、#動態的,思考問題而不僅僅侷限於那個從一開始吸引我們的具體問題」 ​ 有這個概念可以幫助更理解人類圖系統
Thumbnail
一、前言   這篇文章將會簡單介紹物件導向的設計模式,以及學習這項技術需要有哪些先備知識,學習才會比較順利。 二、設計模式   在物件導向中,除了最基本的五大原則以外,其實還有一知名的概念,那就是設計模式(Design Pattern),它能運用到很多層面。 1. 解決一再出現的問題   許多程式設
Thumbnail
一、前言   這篇文章將會簡單介紹物件導向的設計模式,以及學習這項技術需要有哪些先備知識,學習才會比較順利。 二、設計模式   在物件導向中,除了最基本的五大原則以外,其實還有一知名的概念,那就是設計模式(Design Pattern),它能運用到很多層面。 1. 解決一再出現的問題   許多程式設
Thumbnail
自學筆記 - Vue3 watch 的應用
Thumbnail
自學筆記 - Vue3 watch 的應用
Thumbnail
進入本篇章前建議您可以先了解以下兩個篇章,主要是介紹單向過程中的訂閱概念: 【Web微知識系列】訂閱技術的基石,RSS Feed是什麼? 【Web微知識系列】系統之間的訂閱機制,Webhook是什麼? 簡介 Websocket與TCP、HTTP的關係 為什麼要使用Websocket? 建立連接
Thumbnail
進入本篇章前建議您可以先了解以下兩個篇章,主要是介紹單向過程中的訂閱概念: 【Web微知識系列】訂閱技術的基石,RSS Feed是什麼? 【Web微知識系列】系統之間的訂閱機制,Webhook是什麼? 簡介 Websocket與TCP、HTTP的關係 為什麼要使用Websocket? 建立連接
Thumbnail
什麼是RSS Feed? 我們常常在聽的Podcast、看的Youtube都有提供訂閱的機制,那這個訂閱的背後到底是怎麼做的呢? 讓我們一起來了解看看吧! RSS的運作機制 為什麼Podcast需要RSS Feed? ⭐ 透過以上的機制,讓更新的部分自動化同步,將寶貴的時間花費在創作上。
Thumbnail
什麼是RSS Feed? 我們常常在聽的Podcast、看的Youtube都有提供訂閱的機制,那這個訂閱的背後到底是怎麼做的呢? 讓我們一起來了解看看吧! RSS的運作機制 為什麼Podcast需要RSS Feed? ⭐ 透過以上的機制,讓更新的部分自動化同步,將寶貴的時間花費在創作上。
Thumbnail
當閱聽人的數位足跡已經必然成為商品,其中的流動狀態可能就成了某種結構,例如在Youtube上觀看的推薦,背後就有許多原因,可能是因為一樣看了這支影片的人看了什麼,或是一樣年齡層的人看了什麼(有登錄帳號,且資訊正確的前提),又可能是我們曾在Google上搜尋過的什麼,都很有可能。
Thumbnail
當閱聽人的數位足跡已經必然成為商品,其中的流動狀態可能就成了某種結構,例如在Youtube上觀看的推薦,背後就有許多原因,可能是因為一樣看了這支影片的人看了什麼,或是一樣年齡層的人看了什麼(有登錄帳號,且資訊正確的前提),又可能是我們曾在Google上搜尋過的什麼,都很有可能。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News