設計模式在粒度和抽象層次上各不相同。由於存在衆多的設計模式,所以我們可以用一種方式將它們組織起來。這裏,我們根據兩條準則對模式進行分類,如下表所示:
第一是目的準則,即模式是用來完成什麼工作的。模式依據其目的可分爲創建型( Creational)、結構型( Structural)、或行爲型( Behavioral )三種。創建型模式與對象的創建有關;結構型模式處理類或對象的組合;行爲型模式對類或對象怎樣交互和怎樣分配職責進行描述。
第二是範圍準則,指定模式主要是用於類還是用於對象。類模式處理類和子類之間的關係,這些關係通過繼承建立,是靜態的,在編譯時刻便確定下來了。對 象模式處理對象間的關係,這些關係在運行時刻是可以變化的,更具動態性。從某種意義上來說,幾乎所有模式都使用繼承機制,所以“類模式”只指那些集中於處 理類間關係的模式,而大部分模式都屬於對象模式的範疇。
創建型類模式將對象的部分創建工作延遲到子類,而創建型對象模式則將它延遲到另一個對象中。結構型類模式使用繼承機制來組合類,而結構型對象模式則 描述了對象的組裝方式。行爲型類模式使用繼承描述算法和控制流,而行爲型對象模式則描述一組對象怎樣協作完成單個對象所無法完成的任務。
還有其他組織模式的方式。有些模式經常會被綁在一起使用,例如, Composite(組合模式)常和Iterator(迭代器模式)或Visitor(訪問者模式)一起使用;有些模式是可替代的,例如, Prototype(原型模式)常用來替代Abstract Factory(抽象工廠模式);有些模式儘管使用意圖不同,但產生的設計結果是很相似的,例如, Composite(組合模式)和Decorator(裝飾模式)的結構圖是相似的。
還有一種方式是根據模式的“相關模式”部分所描述的它們怎樣互相引用來組織設計模式。下圖給出了模式關係的圖形說明。
顯然,存在着許多組織設計模式的方法。從多角度去思考模式有助於對它們的功能、差
異和應用場合的更深入理解。
Java設計模式分爲創建模式, 結構模式, 行爲模式 3種類型:
Java設計模式之創建模式包括:
Factory, 工廠模式
Singleton, 單例模式
Builder, 建造模式
Prototype, 原型模式
Java設計模式之結構模式包括:
Facade, 門面模式
Decorator, 裝飾模式
Composite, 合成模式
Proxy, 代理模式
Adapter, 適配器模式
Bridge, 橋樑模式
Flyweight, 共享元類模式
Java設計模式之行爲模式包括:
Chain of responsibleif, 責任鏈模式
Command, 命令模式
Strategy, 策略模式
Observer, 觀察模式
Interpreter , 解釋器模式
Iterator, 迭代模式
Mediator, 中介模式
Memento, 備忘錄模式
State, 狀態模式
Template, 模板模式
Visitor, 訪問者模式
開閉原則: 一個軟件實體應該對擴展開放 對修改閉合。
里氏代換原則: 任何能使用父類的地方一定能使用子類。
依賴倒轉原則: 要依賴於抽象 不要依賴於實現。或者是抽象不應該依賴與細節,細節應該依賴於抽象。
合成聚合複用原則: 儘量使用合成聚合而不是繼承去實現複用。
迪米特法則: 一個軟件實體應該儘可能少的與其它實體發生相互作用。
接口隔離原則: 應當爲客戶提供儘可能小的單獨的接口 而不應該提供大的綜合性的接口。