設計模式:創建型總結

Factory:

問題:

1.爲了提高內聚(cohesion)和鬆耦合(Coupling),經常會抽象出一些類的公共接口以形成抽象基類或接口.可以通過聲明一個向基類的指針來指向實際的子類實現,達到多態目的.1)客戶程序員必須知道實際子類的名稱,2)程序的擴展性和維護變得越來越困難;

2.在父類中並不知道具體要實例化哪一個具體的子類:假設類A中要使用到類B,B是一個抽象父類,A中並不知道具體要實例化哪一個B的子類,但是在A的子類D中是可以知道的.

 

以上2個問題引出了Factory模式的2個最重要的功能:1.定義創建對象的接口,封裝了對象的創建;2.使得具體化類的工作延遲到了子類中;

 

AbstractFactory:

 AbstractFactory模式和Factory模式的區別:

       AbstractFactory模式是爲創建一組(有多類)相關或依賴的對象提供創建接口,Factory模式是爲一類對象提供創建接口或延遲對象的創建到子類中實現;

 

SingleTon:

 通過維護一個static的成員變量來記錄這個唯一的對象實例.通過提供一個static的接口instance來獲得這個唯一的實例

Static Singleton* _instance;

Static Singleton* Instance()

{

       If (_instance == 0)

              _instance = new Singleton();

       Return _instance;

}

單件模式主要應用在以下場合:
對於一個類,佔用的系統資源非常多。而且這些資源可以被全局共享,則可以設計爲singleton模式,強迫全局只有一個實例
對於一個類,需要對實例進行計數。可以在createInstance中進行
並可以對實例的個數進行限制。
對於一個類,需要對其實例的具體行爲進行控制,例如,期望返回的實例實際上是自己子類的實例。這樣可以通過Singleton模式,對客戶端代碼保持透明。

Builder:

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

Builder模式是一步一步創建一個複雜的對象,它允許用戶可以只通過指定複雜對象的類型和內容就可以構建它們.用戶不知道內部的具體構建細節.

其實建造者模式就是用來創建複合對象,並把複合對象的創建過程加以抽象,通過子類繼承和重載的方式,動態地創建具有複合屬性的對象。

ProtoType:

       提供一個通過已存在對象進行新對象創建的接口(Clone)

Prototype* Clone() const

{

       Return new ConcretePrototype(*this);

}

使用:

Prototype* p = new ConcretePrototype();

Prototype* p1 = p->Clone();

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章