簡介#
設計模式(Design Patterns)是軟體設計中反覆使用的一種程式碼設計經驗,旨在提高程式碼的可重用性、可擴展性和可維護性。這些模式由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 四人總結提煉,他們在《Design Patterns》一書中詳細介紹了這些模式,因此也被稱為 GoF(四人幫)。
設計原則#
- 開閉原則:軟體應對擴展開放,對修改關閉。
- 里氏替換原則:子類物件應該能夠替換掉所有使用父類物件的地方而不影響程式的正確性。
設計模式概覽#
抽象工廠 (Abstract Factory)#
提供一個創建一系列相關或相互依賴物件的介面,而無需指定它們具體的類。
適配器 (Adapter)#
將一個類的介面轉換成客戶希望的另外一個介面,使得原本由於介面不相容而不能一起工作的那些類可以一起工作。
橋接 (Bridge)#
將抽象與其實現分離,以便兩者可以獨立變化。
生成器 (Builder)#
將複雜物件的構造與其表示分開,以便相同的構造過程可以創建不同的表示。
責任鏈 (Chain of Responsibility)#
使多個物件都有機會處理請求,從而避免請求的發送者和接收者之間的耦合關係。
命令 (Command)#
將一個請求封裝為一個物件,從而使你可用不同的請求對客戶進行參數化。
組合 (Composite)#
將物件組合成樹形結構以表示 “部分 - 整體” 的層次結構。
裝飾者 (Decorator)#
動態地給一個物件添加一些額外的職責。
外觀 (Facade)#
為子系統中的一組介面提供一個一致的介面。
工廠方法 (Factory Method)#
定義一個用於創建物件的介面,讓子類決定實例化哪一個類。
享元 (Flyweight)#
運用共享技術有效地支持大量細粒度的物件。
解釋器 (Interpreter)#
給定一個語言,定義它的文法的一種表示,並定義一個解釋器,這個解釋器使用該表示來解釋語言中的句子。
迭代器 (Iterator)#
提供一種方法順序訪問一個聚合物件中的各個元素。
中介 (Mediator)#
用一個中介物件來封裝一系列的物件互動。
備忘錄 (Memento)#
在不破壞封裝性的前提下,捕獲一個物件的內部狀態,並在該物件之外保存這個狀態。
觀察者 (Observer)#
定義物件間的一種一對多的依賴關係。
原型 (Prototype)#
用原型實例指定創建物件的種類,並且通過拷貝這些原型創建新的物件。
代理 (Proxy)#
為其他物件提供一種代理以控制對這個物件的訪問。
單例 (Singleton)#
保證一個類僅有一個實例,並提供一個訪問它的全局訪問點。
狀態 (State)#
允許一個物件在其內部狀態改變時改變它的行為。
策略 (Strategy)#
定義一系列的演算法,把它們一個個封裝起來,並且使它們可相互替換。
模板方法 (Template Method)#
定義一個操作中的演算法的骨架,而將一些步驟延遲到子類中。
訪問者 (Visitor)#
表示一個作用於某物件結構中的各元素的操作。