C++設計模式(一)——建立型模式
一、建立型模式
1、Factory模式
Factory模式的兩個最重要的功能:
1)定義建立物件的介面,封裝了物件的建立;
2、AbstractFactory模式
AbstractFactory模式關鍵就是將這一組物件的建立封裝到一個用於建立物件的類(ConcreteFactory)中,維護這樣一個建立類總比維護n多相關物件的建立過程要簡單的多。
AbstractFactory模式是為建立一組(有多類)相關或依賴的物件提供建立介面,而Factory模式正如我在相應的文件中分析的是為一類物件提供建立介面或延遲物件的建立到子類中實現。並且可以看到,AbstractFactory模式通常都是使用Factory模式實現(ConcreteFactory1)。
3、Singleton模式
Singleton模式解決問題十分常見,我們怎樣去建立一個唯一的變數(物件)?
通過維護一個static的成員變數來記錄這個唯一的物件例項。通過提供一個staitc的介面instance來獲得這個唯一的例項。
4、Builder模式
當我們要建立的物件很複雜的時候(通常是由很多其他的物件組合而成),我們要要複雜物件的建立過程和這個物件的表示(展示)分離開來,這樣做的好處就是通過一步步的進行復雜物件的構建,由於在每一步的構造過程中可以引入引數,使得經過相同的步驟建立最後得到的物件的展示不一樣。
5、Prototype
Prototype模式也正是提供了自我複製的功能,就是說新物件的建立可以通過已有物件進行建立。
其關鍵就是(C++中)拷貝建構函式的實現方式,這也是C++實現技術層面上的事情。由於在示例程式碼中不涉及到深層拷貝(主要指有指標、複合物件的情況),因此我們通過編譯器提供的預設的拷貝建構函式(按位拷貝)的方式進行實現。說明的是這一切只是為了實現簡單起見,也因為本文件的重點不在拷貝建構函式的實現技術,而在Prototype模式本身的思想。
*Prototype模式和Builder模式、AbstractFactory模式都是通過一個類(物件例項)來專門負責物件的建立工作(工廠物件),它們之間的區別是:Builder模式重在複雜物件的一步步建立(並不直接返回物件),AbstractFactory模式重在產生多個相互依賴類的物件,而Prototype模式重在從自身複製自己建立新類。