重點摘要#

  • 設計模式是最有價值的工具之一,但濫用模式會導致過度工程化
  • 不要為了展示架構能力而把大量模式硬塞進專案
  • 設計模式是針對特定問題的可重用解決方案,不是萬能鑰匙
  • 保持務實的眼光,專注於設計有效的商業解決方案

詳細內容#

設計模式是軟體架構師最有價值的工具之一。使用模式讓我們能創造出更容易溝通和理解的通用解決方案,它們是直接與好設計關聯的概念。但這也使得人們非常容易為了展示架構能力,而在專案中大量拋出模式。

模式病態的徵兆#

如果你發現自己試圖將最愛的模式硬套到不適用的問題空間中,你可能就是模式病態的受害者。許多專案都有這種症狀——你可以想像那個架構師從他的模式書最後一頁往前翻,搓著雙手說「現在,我先用哪一個?」

這種心態類似於一個開發者開始寫類別時想著「嗯,我應該繼承哪個類別?」。設計模式是緩解必要複雜性的優秀工具,但和所有工具一樣,它們可能被誤用。

正確使用模式#

  • 設計模式不是魔法,使用它們不會自動讓解決方案成為好設計
  • 它們是被他人發現和記錄下來的可重用解決方案,幫助我們辨認出已被發明的輪子
  • 我們的工作是識別模式所解決的問題何時出現,然後適當地應用設計模式
  • 不要讓展示設計模式知識的慾望蒙蔽你的務實視野

在專案中到處蓋上模式的印章就是過度工程化。把目光聚焦在設計能提供有效商業解決方案的系統上,用模式來解決模式所針對的問題。

— By Chad LaVigne