什麼是設計模式?
設計模式如同武林秘籍《少林拳法》:記錄著招式結構、適用場景、練成效果。但實戰中沒人按套路出招——真正掌握者能根據場景靈活出招、融會貫通。同理,設計模式不是死記結構圖,而是解決特定問題的思維工具箱。
設計模式的價值
- 面對需求變化從容不迫
- 提升程式碼可維護性、可擴展性
- 優化效能(前提是正確使用)
⚠️ 濫用後果:程式碼難讀、效能低落、維護成本激增、新增功能等同重寫。
五大核心設計原則(SOLID 前身)
| 原則 | 核心思想 | 生活類比 |
| 單一職責 (SRP) | 一個類別只有一個變更理由 | 記憶體壞不該換 CPU |
| 開放封閉 (OCP) | 對擴展開放,對修改封閉 | 加記憶體不該換主機板 |
| 里氏替換 (LSP) | 子類別必須能替換父類別 | 買 DX9 顯卡必須支援 DX9 特性 |
| 依賴倒置 (DIP) | 依賴抽象介面而非具體實作 | USB、PCI-E、TCP/IP 介面標準 |
| 介面隔離 (ISP) | 介面要精小專一 | 買三合一手機壞一個全修 vs 分開買互不影響 |
為何電腦比收音機好修?
電腦模組化、介面標準化、職責單一——完美遵循設計原則。大型專案若無此架構,改一個需求牽動全員,最終因維護成本過高而報廢。
如何高效學習設計模式?
前置知識
- 面向物件基礎(封裝、繼承、多型)
- UML 基礎(類別圖、序列圖)
六重境界
- 看懂設計模式文章
- 能寫出模式骨架程式碼
- 能編寫應用模式的新範例
- 寫代碼時直覺想到可能適用的模式,查資料確認
- 理解需求後直接識別優化點與適用模式
- 完全掌握精髓,靈活運用各模式及其變體
學習鐵律
- 「被動看十個範例,不如主動寫一個」
- 「被動背十個原則,不如自己體會出一個」
- 模式骨架可簡化、變形、混合——解決問題才是王道
常見誤區澄清
- 「這麼多模式用不上」:小專案用上 2-3 個就很棒,用 20+ 的才是反模式。用不上別強塞。
- 「很多模式長得像」:雙胞胎長相同但神不同。關鍵在識別「解決什麼問題」,而非結構相似度。
本系列文章規劃
- 約 20 篇,涵蓋 GoF 23 模式中常用者 + 實用非 GoF 模式
- 少理論、無結構圖、全實戰範例驅動
- 範例源自團隊實際專案,貼近實務
- 每篇固定結構:意圖 → 場景 → 範例碼 → 代碼說明 → 何時採用 → 實作要點 → 注意事項
建議閱讀方式
配合《設計模式》經典書與博客園優秀文章對照研讀,建立立體認知。關注部落格獲取最新更新。