重溫《深入淺出設計模式》外觀模式 (Book Review of Head First Design Pattern, Facade Pattern)
外觀模式就是將眾多的類別 (整體系統中的一部分,例如整體是播放電影系統與系統部分類別則包括電視機、擴大機、音響、電腦的關係) 利用合成產生一個外觀類別,並令 Client 與外觀類別互動,取代 Client 直接與眾多的類別互動,有使用類別 (表象模式) 封裝類別 (系統的部分) 的概念。
外觀模式就是將眾多的類別 (整體系統中的一部分,例如整體是播放電影系統與系統部分類別則包括電視機、擴大機、音響、電腦的關係) 利用合成產生一個外觀類別,並令 Client 與外觀類別互動,取代 Client 直接與眾多的類別互動,有使用類別 (表象模式) 封裝類別 (系統的部分) 的概念。
能夠將螢幕上的操作結果錄製成輕便的 gif 圖檔,使用 gif 的好處不僅是以連續畫面的方式便於說明,同時也不像影片檔受瀏覽工具的限制並且檔案大小也很輕量。ScreenToGif 不僅是開源軟體,對於繁體中文的支援堪稱完美,同時相關的編輯、選項設定等功能豐富到令人覺得不可思議的便利,從此要寫部落格示範程式效果就不在受限於圖片了,呈現方式Level Up 👍
在 GitHub Trending 意外發現的神好用函式庫,提供解決目前 Python Terminal 顯示上的兩個痛點,分別是 Syntax Highlighting 以及 Progress Bar,原本要實現這兩項功能都是仰賴自己手動刻寫,完全是重造輪子的疲憊感。而 Rich 除實現了目前的痛點,並且帶來更多 Terminal 上視覺效果的呈現,實在是相見恨晚 😎
狀態模式和策略模式師出同門,兩者在 UML 的表示上有相同的結構,同樣是利用執行期實作相同介面的不同類別的方法,以多型的方式精簡原本需要用 if else 邏輯來控制的程式流程。兩者的關鍵差別在於使用上的意圖,狀態模式是將物件的狀態封裝為類別,並藉由類別的轉換從而多型地調用方法;策略模式則是在執行期使用依據實作相同介面的不同類別,使用其專有的演算邏輯並避免掉繼承關係所衍生的維護困難。
合成模式就是將類別建構為樹狀的關係,於是樹資料結構的階層關係、遞迴走訪便可以運用在設計系統上。同時合成模式可以與反覆器做結合,客製出強大的類別,保持新增的彈性同時也兼具走訪的便利。
反覆器已經被實踐在許多當代的語言之中,作為集合類型的低階類別所使用。以往並沒有特別感受到 Iterator 的美好,只覺得高階的語法 (python) 方便好用,而有時候得到物件回傳 Iterator 反而不知所措 (例如 Beautiful Soup)。但重溫反覆器模式後,才曉得作為底層的反覆器有多重要,同時理解它也有助於自行實踐整合不同型別的集合類別進行迭代。
從來沒有想過自行開發 Windows Service,一直以來都是在伺服器上直接執行 batch 或者經由工作排程器的方式執行想要達成的服務,但偶然契機下學習到 Windows Service 可以得到更多的便利性,同時藉由安裝 Topshelf 僅需要以 Console 開發上做延伸即可,非常實用。
轉接器模式常與表象模式進行比較,從使用上的觀點來看,前者是為了將類別能夠配合多型的方法使用,將目標類別以介面的方式,實作一個轉接器來轉換被既有的類別來達成;表象模式則是將龐雜的類別包裝成簡易的介面,讓使用者與龐雜的類別保持低耦合、最小知識,同時易於使用。
微軟因應新冠肺炎所造成的失業問題,經由分析 Linkedin 的資料後提出十種市場需要的專業,並且減免 Azure 證照的測驗費用,活動到 2020 年底以前。
命令模式、外觀模式,乍看之下有些相似,但從模式的意義上的分別兩者就可以感受到不同。命令模式是將命令(要求、需求)封裝成物件,並且讓接受命令者與命令的執行職責拆分,類似餐廳點餐從老闆邊接受客人點餐、邊準備料理分為餐廳前台與餐廳後台,同時命令模式可以將命令與執行時間分隔,延後或者指定執行命令的時間;外觀模式則是將繁雜的類別方法,透過一個簡化的控制類別封裝複雜的演算邏輯,對使用者而言僅需要一個方法就能完成所有關聯的步驟。