iT邦幫忙

2023 iThome 鐵人賽

DAY 5
0
自我挑戰組

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

[深入淺出設計模式] Ch2 The Observer Pattern (2) - 【觀察者模式】範例 天氣監測系統 Weather Monitoring application

  • 分享至 

  • xImage
  •  

假設今天你我是一個團隊,跟Weather-O-Ramae公司簽約需開發一款「天氣監測應用系統」(Weather Monitoring application),對方要求這款應用要具備以下條件:

  1. 具備三種顯示模式:

    • 最近天氣模式 Current Conditions Display
    • 天氣資訊統計 Statistics Display
    • 天氣預報 Forecast Display
  2. 能夠讓其他開發者或使用者去利用外部的API來獲取資料,並且創造客製化的顯示模式

    對方會負責提供天氣資料,所以我們要做的是想辦法實現系統邏輯,讓天氣資料即時更新並可以用不同模式展示。
    下圖為此系統的架構,對方會透過天氣觀測站(weather station)連接感測器,獲取濕度、溫度、氣壓的即時資料。資料一旦更新,WeatherDataObject 會將資料傳到顯示裝置(Display Device)。

https://ithelp.ithome.com.tw/upload/images/20230919/201631785YUH4uxd8e.png

由此可知,這個監測系統非常適合用上篇提到的觀察者模式,不同的顯示模式代表訂閱者,天氣資訊則是主題,而訂閱者可以獲得最新天氣資訊。
下圖可以看到,顯示模式要實作觀察者以及顯示元件(Display element)的介面,所以可以得到資料並展示。若是其他開發者需要第三方的顯示模式,也可以直接實作訂閱者介面。

https://ithelp.ithome.com.tw/upload/images/20230920/20163178hsp5pVBsCg.png

理解完架構,下一篇我們可以來看看實際的程式碼了!


參考資料:

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

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


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

尚未有邦友留言

立即登入留言