一、作用
保證乙個類中只生成唯一的例項物件。換句話說,在整個程式空間中,該類只有乙個例項物件
1、該類不能被複製
2、該類不能被公開的創造
那麼對於c++來說,他的建構函式,拷貝建構函式和他的賦值函式都不能被公開呼叫。
但對於該私有的建構函式的構造時機上來說也可以分兩種情況來構造:
1. 只有當需要改類的時候去構造(即為懶漢模式)
2. 在程式開始之前我就先構造好,你到時候直接用就可(即為餓漢模式)
二、為什麼需要單例模式?
(1)在多個執行緒之間,如初始化一次socket資源
(2)在整個程式空間使用全域性變數,共享資源。
(3)大規模系統中,為了效能的考慮,需要節省物件的建立時間。
三、實現膽力的常用步驟
(1)建構函式私有化
(2)提供乙個全域性的靜態方法(全域性訪問點)
(3)在類中定義乙個靜態指標,指向本類的變數的靜態變數指標
四、單例模式的分類及實現
(1)懶漢式
#include
using
namespace
std;
class singelton
singelton & operator=(const singelton &);
public:
static singelton *getinstance()
return m_psl;
}static
void freeinstance()
}private:
static singelton *m_psl;
};singelton *singelton::m_psl = null;
void main041()
else
singelton::freeinstance();
return ;
}void main()
(2)餓漢式
#include
using
namespace
std;
class singelton
singelton & operator=(const singelton &);
public:
static singelton *getinstance()
static
void freeinstance()
}private:
static singelton *m_psl;
};//int g_count = 0;
//餓漢式
singelton *singelton::m_psl = new singelton;
void main041()
else
singelton::freeinstance();
return ;
}void main()
五、懶漢式和餓漢式的執行緒安全
多執行緒中會導致多個例項的產生,從而導致執行**不正確以及記憶體的洩露。
單例模式保證了多執行緒的安全性。
設計模式之單例模式
前一段時間買了一本秦小波寫的 設計模式之禪 網上對這書的評價很高。現在還沒有看很多,但是有些地方頗有感觸,也並不是所有的地方都能看懂,但是會慢慢研究的。自己對於設計模式的感覺就是乙個字 牛!感覺會23種設計模式並且會熟練運用的人,真的就是大師級的牛人了,設計模式是乙個專案主管或者架構師一定要會的東西...
設計模式之單例模式
package com.xie.singleton public class singleton 提供乙個共有的靜態的入口方法 public static singleton getinstance 懶漢式 延遲載入 提供乙個私有的靜態的成員變數,但不做初始化 private static sing...
設計模式之 單例模式
單例模式 singleton 保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。單例模式 單件模式 使用方法返回唯一的例項 public class singleton private static singleton instance public static singleton geti...