一,單例模式要解決的問題:
為了節省資源,使得乙個類只能例項化唯一的乙個物件;
二,單例模式的實現方式:
將生成物件的介面(建構函式和拷貝建構函式)遮蔽起來,然後在給出乙個唯一的靜態介面在類外進行例項化。
三,單例模式的分類:
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.確保某乙個類只有乙個例項,而且自行例項化並且向整個系統提供這個...