iT邦幫忙

2023 iThome 鐵人賽

DAY 4
0
自我挑戰組

深入淺出設計模式 (Head First Design Pattern) - 重點整理及範例分享系列 第 4

[深入淺出設計模式] Ch2 The Observer Pattern (1) - 【觀察者模式】

  • 分享至 

  • xImage
  •  

觀察者模式 Observer Pattern

  • 存在兩個角色,分別為主題(Subject) 跟觀察者 (Observer),是一對多的關係。

    • 像是一個 Youtube 頻道會有多個訂閱者,Youtube 頻道為 Subject,訂閱者為 Observer。
  • 主題跟觀察者之間存在 鬆耦合 (Loose Coupling) 的關係

    • 鬆耦合會使主題不會獲得太多關於Observer的資訊,但可以得知他們之間有訂閱的關係。
      換言之,主題只知道觀察者有實作觀察者的介面,但無法得知實際的類別為何。

    • 鬆耦合可以使觀察者與主題之間相互依賴性較低,讓我們的程式碼更有彈性。
      因為分別實作不同的介面,如果要修改其中一方的程式,也不會去影響到另一方。

  • 主題可以決定要接受或是拒絕觀察者的訂閱要求

    • 但Youtuber不能封鎖訂閱者😂
  • 一旦主題的內容改變,觀察者會接到通知,取得最新資訊

    • 訂閱者可以第一時間收到 Youtuber 的新影片或是新狀態更新。

https://ithelp.ithome.com.tw/upload/images/20230919/20163178jRLHFlW2wk.png

Concrete Subject 可以去實作Subject 介面的功能,而 Concrete Observer 會實作 Observer 的介面功能。getState()setState() 在之後的文章會再解釋到,下篇再繼續討論觀察者模式和範例喔!


參考資料:

  1. 《深入淺出設計模式 (Head First Design Patterns) 》

Disclaimer
因為讀的是原文版,所以難免會有翻譯詞不達意或是專有名詞上的差異,有錯誤的話歡迎在留言區一起交流!


上一篇
[深入淺出設計模式] Ch1 Intro to Design Patterns (3) - 【策略模式 Strategy Pattern】 SimUDuck 鴨子模擬器 &範例補充
下一篇
[深入淺出設計模式] Ch2 The Observer Pattern (2) - 【觀察者模式】範例 天氣監測系統 Weather Monitoring application
系列文
深入淺出設計模式 (Head First Design Pattern) - 重點整理及範例分享35
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言