要求
- 構(gòu)造函數(shù)應(yīng)該私有
- 構(gòu)造出的對(duì)象由類保存
- 提供接口能讓外界訪問(wèn)帶對(duì)象
- 考慮多線程狱意。
- 按需創(chuàng)建
如果按需創(chuàng)建泪喊,那么需要避免多線程同時(shí)訪問(wèn)“沒(méi)有實(shí)例”,然后都去創(chuàng)建實(shí)例髓涯。
因此袒啼,如果是按需創(chuàng)建應(yīng)該是
class Singleton
{
private:
Singleton();
static Singleton *instance;
public:
Singleton &get_instance()
{
if(instance == nullptr)
{
MutexLock_guard lock(mutex);
if(instance == nullptr)
{
instance = new Singleton;
}
}
return *instance;
}
}
如果不需要按需創(chuàng)建,那么直接定義一個(gè)私有的靜態(tài)成員
private:
static Singleton *instance = new Singleton;
就可以了纬纪。