本次系列的文章摘自《設計模式:可復用物件導向軟體工程的基礎》(erich gamma 等著,李英軍 等 譯)。
本文只是對設計模式做乙個簡單的介紹。
設計模式一樣而言,有四個基本要素:1、設計模式;2、問題;3、解決方案;4、效果。設計模式是對被用來在特定的場景下解決一般設計問題的類和相互通訊的物件的描述。
設計模式的分類主要有兩種,其一是根據目的準測分類,即模式是用來完成什麼工作的;其二是範圍準則,指定模式主要是用於類還是用於物件。分類結果如下圖:
目的建立型
結構型行為型範圍類
factory method
adapter(類)
interpret
template method
物件abstract factory
builder
prototype
singleton
adapter(物件)
bridge
composite
decorator
façade
flyweight
proxy
chain of responsibility
command
iterator
mediator
memento
observer
state
strategy
visitor
那麼,如何選擇設計模式呢?
主要從以下的幾個方面來著手:
1.考慮設計模式是怎麼樣解決設計問題的。注意各個模式對於找到合適的物件、決定物件的粒度、指定物件的介面的影響。
2.瀏覽模式的意圖部分 。通讀每個模式的意圖,找到和問題相關的乙個或多個模式。
3.研究模式怎麼樣相互關聯。設計模式之間的關係如下圖所示:
4.檢查重新設計的原因。
5.考慮哪些設計是可以改變的。主要是考慮那些是可以變化卻不引起重新設計。設計模式所支援的設計的可變方面如下所示。
目的設計模式
可變的方面
建立abstract factory
builder
factory method
prototype
singleton
產品物件家族
如何建立乙個組合物件
被例項化的子類
被例項化的類
乙個類的唯一例項
結構adapter
bridge
composite
decorator
facade
flyweight
proxy
物件的介面
物件的實現
乙個類的結構和組成
物件的職責,不產生子類
乙個子系統的介面
物件的儲存開銷
如何訪問乙個物件;該物件的位置
行為chain of responsibility
command
interpreter
iterator
mediator
memento
observer
state
strategy
template method
visitor
滿足乙個請求的物件
何時、怎麼樣滿足乙個請求
乙個語言的文法以及解釋
如何遍歷、訪問乙個聚合的各元素
物件間怎麼樣互動、和誰互動
乙個物件中哪些私有資訊存放在該物件之外,以及在什麼時候進行儲存
多個物件依賴於另外乙個物件,而這個物件如何保持一致
物件的狀態
演算法演算法中的某些步驟
某些可做用於乙個物件上的操作,但不修改這個物件的類
設計模式詳解 設計模式簡介
乙個模式應該包括的方面 模式的名稱 模式的目的 模式的實現 模式的約束 為什麼要學習設計模式?1.利用解決方案 2.建立通用術語,方便交流 3.對於問題,設計過程和物件導向,模式給你乙個更高層次的視角,這樣的視角將你從過早處理細節中解放出來。4.即使你不使用直接設計模式,避免龐大的繼承體系也會導致改...
設計模式簡介
設計模式 design pattern 是一套被反覆使用 多數人知曉的 經過分類編目的 設計經驗的總結。設計模式是軟體工程 的基石脈絡,如同大廈 的結構一樣。模式名稱 pattern name 問題 problem 解決方案 solution 效果 consequences 設計模式分為三種型別,共...
設計模式簡介
1.裝飾模式 顧名思義,裝飾模式就是給乙個物件增加一些新得功能,而且是動態的,要求裝飾物件和被裝飾物件實現同乙個介面,且裝飾物件中持有被裝飾物件的乙個例項.2.觀察者模式 簡單來說,當乙個物件變化時,其他依賴該物件的物件都會收到通知,並且隨著變化 物件之間是一種一對多的關係.3.工廠模式 客戶端需要...