有了前幾篇的基礎後,我們可以來談這次我的主題:「設計模式」。在實際進入到各個不同模式如何實踐前,我們再花些時間了解什麼是設計模式、為什麼我們要使用它?
設計模式的起源是來自於建築學。一位建築師, Christopher Alexander,專注於研究何謂優秀的建築設計、何種設計是被世人稱之為美。Alexnder 認為上述兩個問題是有客觀的標準去評價的,而不只是純然僅是個人偏好而已。
本書作者推論
我可以想像到 Alexander 如此捫心自問:
- 在優秀設計中具備而劣質設計中不具備的是什麼?
- 在劣質設計中具備而優秀設計中不具備的又是什麼?
Alexander 對模式 (pattern) 下了如是的定義:「每個模式都描述了一個在我們環境中會不斷出現的問題,並進而描述了這個問題解決方案的要素,透過這種方式,解決方案能夠百萬次地反覆應用,但是具體方式又不會完全相同。」
從 90 年代開始,有許多人開始思考把模式的概念引入軟題設計中,其中影響最大的莫過於《DESIGN PATTERNS: Elements of Reusable Object-Oriented Software》。本書的四位作者被大家稱作 GoF (Gang of Four),四人幫。
本書訂立了:
模式的特徵,本書提供如下表:
項目 | 描述 |
---|---|
名稱 | 每個模式有唯一的一個名稱 |
意圖 | 模式的目的 |
問題 | 模式要解決的問題(動機) |
解決方案 | 模式如何為問題提供適合其所處環境的一個解決方案 |
參與者與協作者 | 模式涉及的實體 |
效果 | 使用模式的效果、模式中發揮作用的各種因素 |
實作 | 實作方式 |
一般性結構 | 典型結構的標準圖 |
作者提供了三個使用設計模式的理由
除了上述三點,還有其他好處。
最後,作者也提到 GoF 對物件導向設計原則的建議:
以上三個原則會在學習大多數設計模式中使用到。
下一篇我們會開始介紹設計模式中的 Facade 模式~明天見!