導讀:
設計模式描述了軟件設計過程中某一類常見問題的一般性解決方案。
面向對象設計模式描述了面向對象設計過程中、特定場景下、類與相互通信的對象之間常見的組織關係。
以下所講設計模式即指“面向對象設計模式”。
定義:
模式(Pattern)—從生產經驗和生活中經驗中經過抽象和昇華提煉出來的核心知識體系,也可以看作是解決某一類問題的方法。把解決某類問題的方法總結歸納到理論高度,就是模式。模式是一種指導。
特點:
- 在特定的場景下有可重用性,對相同類型不同問題的環境,其解決方案都有效。
- 可傳授性,即問題出現的機會很多,解決問題的方案相同,人們相對可以接受。
- 有表示模式的名稱。
設計模式的基本要素:
- 模式名稱
模式名稱(pattern name)是一個助記名,它用一兩個詞來描述模式的問題。解決方案和效果。
- 問題
問題(problem)描述了應該在何時使用模式。它解釋了設計問題和問題存在的前因後果,它可能描述了特定的設計問題,如怎樣用對象表示算法;也可能描述了導致不靈活設計的類或對象結構。
- 解決方案
解決方案(solution)描述了設計的組成成分,他們之間的相互關係及各自的職責和協作方式 。
- 效果
效果(consequences)描述了模式應用的效果及使用模式應權衡的問題。模式效果包括它對系統的靈活性、擴充性或可移植性的影響。
列如,觀察者模式:
- 名稱——觀察者。
- 問題——定義對象間的一種一對多的依賴關係,當一個對象的狀態發生改變時,所有依賴泰德對象都得到通知並被自動更新。
- 解決方案——主題(Subject)接口、觀察者接口、具體主題、具體觀察者。
- 效果——一個對象的狀態發生改變,所有的依賴對象都將得到通知,講觀察者和觀察者解耦,保證高度的協作。