随着對軟體工程研究的不斷深入,設計模式也越來越多了,根據其目的準則,劃分如下:
1. 建立型:creational 與對象的建立有關。
2. 結構型:Structural 處理類或對象之間的組合。
3. 行為型:behavioral 描述類或對象如何互動及如何配置設定職責。
建立型模式抽象了執行個體化的過程,将關于該系統使用的具體的類的資訊封裝了起來。允許客戶用結構和功能差别很大的産品對象配置一個系統。配置可以是靜态的,也可以是動态的。
通常建立對象的設計都是從工廠方法開始,當設計者發現需要更大的靈活性時,設計變回想其他建立型模式進行演化。
其中,建立型模式
1.抽象工廠模式 AbstractFactory
2.建造者模式 Builder
3.工廠方法模式 Factory Method
4.原型模式 Prototype
5.單例模式 Singleton
具體來說:
抽象工廠模式提供一個建立一系列或相關依賴對象的接口,而無需指定他們具體的類。抽象工廠是工廠方法模型的抽象,每一個具體工廠建立多個産品類的對象。具體工廠類與産品類是一對多的關系。是以具體工廠之間是采用了不同的方法,建立了相同的對象。
在“增加産品族”上,抽象工廠很好地支援了“開放-封閉原則”,但是在“增加新産品的等級結構”上,需要更改所有的工廠類。這有違背了“開放-封閉原則”。是以綜合來說,抽象工廠模型以一種傾斜的方式支援增加新的産品,它為新産品族的增加提供了友善,但不能為新産品的等級結構的增加提供同樣的友善。

建造者模式是将一個複雜對象的建構與它的表示分離,使得同樣的建構過程可以建立不同的表示。其中Builder定義了建構對象所需的“部件”或者說“步驟”,而ConcreteBuilder提供了幾種樣本的建構“模版”,Director是決定選擇哪個“模版”來建構産品。這就決定了建造者模型可以擔當建構複雜對象的重任,這些對象内部建構間的建造順序通常是穩定的,但對象内部的建構通常面臨着複雜的變化。
由于建構者隐藏了産品的建構細節,是以若要改變一個産品的内部表示,隻需要再定一個具體的建造者就可以了。
工廠方法模型定義了一個用于建立對象的接口,讓子類決定執行個體化哪一個類,工廠模式使一個類的執行個體化延遲到了其子類中。工廠方法模式是優化的簡單工廠模式,它很好的支援了“開閉原則”。每一個具體的工廠隻能建構一個類的對象。具體工廠類與産品類是一對一的關系。
原型模式是用原型執行個體指定建立對象的種類,并且通過拷貝這些原型建立新的對象,而無需知道具體的建立細節。
建立相應數目的原型并克隆他們通常比每次用合适的狀态手工執行個體化該類更友善一些。
.NET在System命名空間中提供了Icloneable接口,可以通過該接口的Clone()方法來完成原型模式。在使用原型模式中應該注釋淺拷貝和深拷貝(針對與引用類型)。
單例模式保證一個類僅有一個執行個體,并提供一個通路他的全局通路點。單例模式必須自己建立自己的唯一執行個體。當一個系統要求某個類隻要一個執行個體化對象,即可使用單例模式。