設計模式 單例模式(慢載入模式和快載入模式)

2021-09-26 15:50:40 字數 1386 閱讀 4782

一,單例模式要解決的問題:

為了節省資源,使得乙個類只能例項化唯一的乙個物件;

二,單例模式的實現方式:

將生成物件的介面(建構函式和拷貝建構函式)遮蔽起來,然後在給出乙個唯一的靜態介面在類外進行例項化。

三,單例模式的分類:

1,懶漢(慢載入模式):在第一次用到類例項的時候才會去例項化。與之對應的是餓漢式單例。(懶漢本身是執行緒不安全的)

懶漢模式**如下:

#include#includeusing namespace std;

class singleton

static singleton* single;

public:

static singleton* getsingelton();

};singleton* singleton::single = null;

singleton* singleton::getsingelton()

return single;

}int main()

else

return 0;

}

執行緒安全的懶漢模式**如下:

//執行緒安全的懶漢單例模式(加鎖解鎖部分為偽**,需要設定相應的加鎖解鎖行為)

class singleton

private:

static singleton* p;

public:

static singleton* initance();

};singleton* singleton::p = null;

singleton* singleton::initance()

return p;

}

2,餓漢(快載入模式):在單例類定義的時候就進行例項化。(本身是執行緒安全的)

餓漢模式**如下:

//餓漢單例模式

#include #include #include class singleton

static singleton* single;

public:

static singleton* getsingleton();

};// 餓漢模式的關鍵:初始化即例項化

singleton* singleton::single = new singleton;

singleton* singleton::getsingleton()

四,關於如何選擇懶漢和餓漢模式:

特點與選擇:

懶漢:在訪問量較小時,採用懶漢實現。這是以時間換空間。

餓漢:由於要進行執行緒同步,所以在訪問量比較大,或者可能訪問的執行緒比較多時,採用餓漢實現,可以實現更好的效能。這是以空間換時間。

設計模式 單例模式 懶載入

這篇文章總結幾種比較常用的設計模式,不懂得設計模式。怎麼敢稱熟悉oop思想。單例模式的核心結構中只包含乙個被稱為單例類的特殊類,通過單例模式可以保證系統中乙個類只有乙個例項 由於快載入單例模式是執行緒安全的,所以本文只討論懶載入單例模式的執行緒安全問題 版本一 使用懶載入 快載入 程式呼叫時再分配記...

設計模式 工廠模式和單例模式

在平常實用類的時候,往往要進行類功能的擴充套件,如果直接在裡面進行擴充套件,有可能會對類裡面的其他功能產生影響,所以在擴充套件功能的時候就要重新寫類,這就要採用繼承的方式,如 1 class yunsuan 2 8 9class jia extends yunsuan 造乙個加的子類繼承父類 10 ...

設計模式 單例模式

單例模式 singleton pattern 是乙個比較簡單的模式,其定義如下 ensure a class has only one instance,and provide a golbal point of acess to it.確保某乙個類只有乙個例項,而且自行例項化並且向整個系統提供這個...