設計模式選用參考

內容摘自《設計模式 可複用面向對象軟件的基礎》

創建型模式

Factory Method:定義一個用於創建對象的接口,讓子類決定將哪一個類實例化。該模式使一個類的實例化延遲到其子類。

Abstract Factory:提供一個創建一系列相關或相互依賴對象的接口,而無須指定它們具體的類。

Builder:將一個複雜對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示。

Prototype:用原型實例指定創建對象的種類,並且通過拷貝這個原型來創建新的對象。

Singleton:保證一個類僅有一個實例,並提供一個訪問它的全局訪問點。

結構型模式

Adapter:將一個類的接口轉換成客戶希望的另外一個接口。該模式使得原本由於接口不兼容而不能一起工作的那些類可以一起工作。

Bridge:將抽象部分與它的實現部分分離,使它們都可以獨立地變化。

Composite:將對象組合成樹形結構以表示“部分-整體”的層次結構。該模式使得客戶對單個對象和組合對象的使用具有一致性。

Decorator:動態地給一個對象添加一些額外的職責。就擴展功能而言,該模式比生成子類方式更爲靈活。

Facade:爲子系統中的一組接口提供一個一致的界面。該模式定義了一個高層接口,這個接口使得這一子系統更加的容易使用。

Flyweight:運用共享技術有效地支持大量細粒度的對象。

Proxy:爲其他對象提供一個代理以控制對這個對象的訪問。

行爲型模式

Interpreter:給定一個語言,定義它的文法的一種表示,並定義一個解釋器,該解釋器使用該表示來解釋語句中的句子。

Template Method:定義一個操作中的算法的骨架,而將一些步驟延遲到子類中。該模式使得子類不改變一個算法的結構即可重定義該算法的某些特定步驟。

Chain of Responsibility:解除請求的發送者與接收者之間的耦合,使多個對象都有機會處理這個請求。將這些對象連成一條鏈,並沿着這條鏈傳遞該請求,直到有一個對象處理它。

Command:將一個請求封裝爲一個對象,從而使你可用不同的請求對客戶進行參數化;對請求排隊或記錄請求日誌,以及支持可取消的操作。

Iterator:提供一種方法順序訪問一個聚合對象中的各個元素,而又不需要暴露該對象的內部表示。

Mediator:用一箇中介對象來封裝一系列的對象交互。該模式使各對象不需要顯式地相互引用,從而使其耦合鬆散,而且可以獨立地改變它們之間地交互。

Memento:在不破壞封裝性地前提下,捕獲一個對象地內部狀態,並在該對象之外保存這個狀態。這樣以後就可將該對象恢復到保存的狀態。

Observer:定義對象間的一種一對多地依賴關係,以便當一個對象的狀態發生改變時,所有依賴於它的對象都得到通知並自動刷新。

State:允許一個對象在其內部狀態改變時改變它的行爲。對象看起來似乎修改了它所屬的類。

Strategy:定義一系列的算法,把它們一個個封裝起來,並且使他們可相互替換。本模式使得算法的變化可獨立於使用它的客戶。

Visitor:表示一個作用於某些對象結構中的各元素的操作。它使你可以在不改變各元素的類的前提下定義作用於這些元素的新操作。

設計模式一覽

  目的
創建型 結構型 行爲型
範圍 Factory Method Adapter(類) Interpreter
Template Method
對象 Abstract Factory
Builder
Prototype
Singleton
Adapter(對象)
Bridge
Composite
Decorator
Facade
Flyweight
Proxy
Chain of Responsibility
Command
Iterator
Mediator
Memento
Observer
State
Strategy
Visitor

設計模式可變的方面

目的 設計模式 可變的方面
創建型模式
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 某些可作用於一個(組)對象上的操作,但不修改這些對象的類
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章