設計模式入門:觀察者模式 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
孩子寫功課時瞇眼?小心近視!這款喜光全光譜TIONE⁺光健康智慧檯燈,獲眼科院長推薦,網路好評不斷!全光譜LED、180cm大照明範圍、5段亮度及色溫調整、350度萬向旋轉,讓孩子學習更舒適、保護眼睛!
Thumbnail
孩子寫功課時瞇眼?小心近視!這款喜光全光譜TIONE⁺光健康智慧檯燈,獲眼科院長推薦,網路好評不斷!全光譜LED、180cm大照明範圍、5段亮度及色溫調整、350度萬向旋轉,讓孩子學習更舒適、保護眼睛!
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
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上搜尋過的什麼,都很有可能。
Thumbnail
多任務學習指的是使用多個相關的任務目標(Multiple objectives)來學習共享的表示方法。在這篇文章中,我們會介紹 google 的 youtube recommender 系統就是利用 Multi-gate Mixture of Experts 來達成多目標多任務學習的方式。
Thumbnail
多任務學習指的是使用多個相關的任務目標(Multiple objectives)來學習共享的表示方法。在這篇文章中,我們會介紹 google 的 youtube recommender 系統就是利用 Multi-gate Mixture of Experts 來達成多目標多任務學習的方式。
Thumbnail
2007年9月20日,距今已近13年。這是回去看看加入 YouTube 的日期!這一輪的生肖輪迴後,所有人的生活,也深深受到「網路創作者」的影響吧? 有發現這幾年的新聞會越來越多出現一群「YouTuber」這個新興名詞嗎?還有印象是什麼時候開始這一群人也佔據了主流媒體成為不可忽視的聲音嗎?諸如
Thumbnail
2007年9月20日,距今已近13年。這是回去看看加入 YouTube 的日期!這一輪的生肖輪迴後,所有人的生活,也深深受到「網路創作者」的影響吧? 有發現這幾年的新聞會越來越多出現一群「YouTuber」這個新興名詞嗎?還有印象是什麼時候開始這一群人也佔據了主流媒體成為不可忽視的聲音嗎?諸如
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News