加入 Design & Pattern 團隊數月,一直未寫設計模式隨筆。並非不想寫、也非無時間,而是初學者寫設計模式,易有「班門弄斧」之懼。園子裡呂震宇老師的《設計模式系列》與 wayfarer 的《設計之道》堪稱經典。但秉持「交流即進步」的信念,決定記錄自己學習設計模式的歷程,命名為「探索設計模式」(現更名為 .NET 設計模式),期盼得到前輩指點,也為後進提供一份學習路徑參考。
「地上本沒有路,走得人多了也就成了路。」設計模式同理——它是前人發現、總結形成的一類問題的通用解決方案,而非被設計出來的定性規則。不像演算法可照搬照用,模式需根據上下文靈活套用、組合、變體。
架構關注 High-Level Design,模式關注「經驗萃取的準則」在設計中的應用。兩者相互涵蓋:模式將共通問題中的「不變部分」與「變化部分」分離,不變部分構成模式骨架。不同層面有不同模式:小到語言實現慣用語,大到系統架構風格。
一位前輩結合建築學給出的心得:
答案是肯定的,但前提是確認模式應用未過度。天才程式員可能在一段代碼裡塞入 6 種模式,也可能不用模式把設計做得很好。但我們的目標是有效設計,模式為此提供參考模型與設計方法。
初入軟體設計領域者,常因缺乏專案實戰經驗、OO 思維未建立,覺得設計模式過於高深。甚至資深工程師也不敢自稱精通所有模式。
建議學習路徑:
本系列將以 .NET 為實作語言,依序探討:
每篇包含:核心意圖、生活類比、反模式演進、標準實現、.NET 框架應用、變體與權衡、實戰陷阱。拒絕照抄 GoF 圖表與定義,力求從「為什麼」出發,通過「怎麼做」達到「什麼時候用」。
設計模式之旅,始於好奇,止於內化。願這個系列成為你我探索之路的同行者。下一篇,我們從最簡單卻最深奧的單例模式開始。