繼上篇,這篇描述建立型模型。
(1)單例模式:保證為乙個類只生成唯一的例項物件。也就是說,在整個程式空間中,該類只存在乙個例項物件。
(2)簡單工廠模式:靜態工廠方法模式;通過專門定義乙個類來負責建立其他類的例項,被建立的例項通常都具有共同的父 類。
(3)工廠模式:工廠方法模式同樣屬於類的建立型模式,又被稱為多型工廠模式 。工廠方法模式的意義是定義乙個建立產品對 象的工廠介面,將實際建立工作推遲到子類當中。
核心工廠類不再負責產品的建立,這樣核心類成為乙個抽象工廠角色,僅負責具體工廠子類必須實現的介面,這 樣進一步抽象化的好處是使得工廠方法模式可以使系統在不修改具體工廠角色的情況下引進新的產品。
(4)抽象工廠模式:是所有形態的工廠模式中最為抽象和最其一般性的。抽象工廠模式可以向客戶端提供乙個介面,使得客戶 端在不必指定產品的具體型別的情況下,能夠建立多個產品族的產品物件。
(5)建造者模式: builder模式也叫建造者模式或者生成器模式,是由gof提出的23種設計模式中的一種。builder模式是一種對 象建立型模式之一,用來隱藏復合物件的建立過程,它把復合物件的建立過程加以抽象,通過子類繼承和重 載的方式,動態地建立具有復合屬性的物件。
(6)原型模式:prototype模式是一種物件建立型模式,它採取複製原型物件的方法來建立物件的例項。使用prototype模式建立 的例項,具有與原型一樣的資料。
1、由原型物件自身建立目標物件。也就是說,物件建立這一動作發自原型物件本身。
2、目標物件是原型物件的乙個轉殖。也就是說,通過prototype模式建立的物件,不僅僅與原型物件具有相同的 結構,還與原型物件具有相同的值。
3、根據物件轉殖深度層次的不同,有淺度轉殖與深度轉殖。
為什麼需要單例模式?
(1)在多個執行緒之間,比如初始化一次socket資源
(2)在整個程式空間使用全域性變數,共享資源
(3)大規模系統中,為了效能的考慮,需要節省物件的建立時間
實現單例模式常用步驟:
(1)建構函式私有化
(2)提供乙個全域性的靜態方法(全域性訪問點)
(3)在類中定義乙個靜態指標,指向本類的變數的靜態變數指標
單例模式分類及實現:
(1)懶漢式
(2)餓漢式
懶漢式和餓漢式的執行緒安全:
多執行緒中會導致多個例項的產生,從而導致執行**不正確以及記憶體的洩露。
用**實現單例模式(注意餓漢式和懶漢式的對比):
//單例模式
#include#includeusing namespace std;
pthread_mutex_t mutex; //加上執行緒 互斥鎖
class singleton
public:
static singleton *getinstance() //提供
*/return minstance; }
static int getobjectcount()
void release() //析構函式 }
};//singleton *singleton::minstance = null; //懶漢式
singleton *singleton::minstance = new singleton; //餓漢式
int singleton::objectcount = 0;
void *create(void *arg) //餓漢不需要執行緒同步
int main() }
void *status;
for(i=0 ; i<10 ; i++)
pthread_mutex_destroy(&mutex);
return 0;
}
建立物件 原型模型
1.原型物件 通過呼叫建構函式而建立的物件的例項都有乙個原型物件,該原型物件包含同乙個建構函式建立的物件所共享的屬性和方法。2.prototype屬性 建立的每個函式都有乙個prototype屬性,該屬性是乙個指標,指向原型物件。3.使用原型物件的好處是 讓所有的物件例項共享他所包含的屬性和方法。如...
建立型模型 單例模式
單例模式是一種常用的軟體設計模式。在它的核心結構中只包含乙個被稱為單例的特殊類。通過單例模式可以保證系統中乙個類只有乙個例項而且該例項易於外界訪問,從而方便對例項個數的控制並節約系統資源。如果希望在系統中某個類的物件只能存在乙個,單例模式是最好的解決方案。singleton 單例 在單例類的內部實現...
建立型模型 抽象工廠模式
工廠方法模式通過引入工廠等級結構,解決了簡單工廠模式中工廠類職責太重的問題,但由於工廠方法模式中的每個工廠只生產一類產品,可能會導致系統中存在大量的工廠類,勢必會增加系統的開銷。此時,我們可以考慮將一些相關的產品組成乙個 產品族,由同乙個工廠來統一生產,這就是我們本文將要學習的抽象工廠模式的基本思想...