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()
單件模式主要應用在以下場合:
對於乙個類,占用的系統資源非常多。而且這些資源可以被全域性共享,則可以設計為singleton模式,強迫全域性只有乙個例項
對於乙個類,需要對例項進行計數。可以在createinstance中進行
並可以對例項的個數進行限制。
對於乙個類,需要對其實例的具體行為進行控制,例如,期望返回的例項實際上是自己子類的例項。這樣可以通過singleton模式,對客戶端**保持透明。
builder:
將乙個複雜物件的構建與它的表示分離
,使得同樣的構建過程可以建立不同的表示.
builder
模式是一步一步建立乙個複雜的物件
,它允許使用者可以只通過指定複雜物件的型別和內容就可以構建它們
.使用者不知道內部的具體構建細節.
其實建造者模式就是用來建立復合物件,並把復合物件的建立過程加以抽象,通過子類繼承和過載的方式,動態地建立具有復合屬性的物件。
prototype:
提供乙個通過已存在物件進行新物件建立的介面
(clone)
prototype* clone() const
使用:prototype* p = new concreteprototype();
prototype* p1 = p->clone();
建立型設計模式總結
注意單件模式在多執行緒的問題。abstract factory抽象工廠 例子 遊戲中不同系列的設施建立 古典的,現代的.但是對於系列中的物件 道路,房屋.這些是不變的,不 會需要增加乙個 下水道 物件 簡單工廠的問題 不能應對 不同系列物件 的變化,有了新的變化點。一系列相互依賴的物件 抽象工廠的缺...
白話設計模式 建立型設計模式總結
到今天為止把建立型的幾種設計模式算是學完了,搞一段落.進行一下總結.時間比較短,還好建立型的比較簡單,以後估計不會這麼順利了.由於沒有真正的實踐在專案中,所以到現在為止,我認為我還沒有掌握,僅僅是對設計模式有些了解而已.建立型模式,主要用來解決new所帶來的物件間的耦合關係,除了singleton和...
建立型設計模式
建立型設計模式對類的建立例項化過程進行抽象,將物件的建立和物件的使用分離。簡單工廠模式 使用頻率4星 工廠方法模式 使用頻率5星 抽象工廠模式 使用頻率5星 建造者模式 使用頻率2星 原型模式 使用頻率3星 單例模式 使用頻率4星 toc 簡單工廠模式將物件建立和物件使用相分離,降低了系統耦合度。優...