設計模式在粒度和抽象層次上各不相同。由於存在眾多的設計模式,所以我們可以用一種方式將它們組織起來。這裡,我們根據兩條準則對模式進行分類,如下表所示:
第一是目的準則,即模式是用來完成什麼工作的。模式依據其目的可分為建立型( 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, 訪問者模式
開閉原則: 一個軟體實體應該對擴充開放 對修改閉合。
裡氏代換原則: 任何能使用父類的地方一定能使用子類。
依賴倒轉原則: 要依賴於抽象 不要依賴於實現。或者是抽象不應該依賴與細節,細節應該依賴於抽象。
合成彙總複用原則: 盡量使用合成彙總而不是繼承去實現複用。
迪米特法則: 一個軟體實體應該儘可能少的與其它實體發生相互作用。
介面隔離原則: 應當為客戶提供儘可能小的單獨的介面 而不應該提供大的綜合性的介面。