單例模式一般應用在整個應用中只會存在一個對象。比如應用類,游戲場景類,工具類等。 實現方式: 頭文件 singleton.h: #ifndef _SINGLETON_H_ #define _SINGLETON_H_ class CSingleton{ public: //供外部調用,通過此方法獲取實 ...
單例模式一般應用在整個應用中只會存在一個對象。比如應用類,游戲場景類,工具類等。
實現方式:
頭文件 singleton.h:
#ifndef _SINGLETON_H_
#define _SINGLETON_H_
class CSingleton{
public:
//供外部調用,通過此方法獲取實例
static CSingleton* getInstance();
private:
CSingleton();
CSingleton(const CSingleton&);
CSingleton& operator=(const CSingleton&);
static CSingleton* instance;
}
#endif
實現文件 singleton.cpp
#include "singleton.h"
//構造函數
CSingleton::CSingleton(){}
//空拷貝函數,防止複製
CSingleton::CSingleton(const CSingleton&){}
//重載=函數,防止複製
CSingleton::CSingleton& operate=(const CSingleton&){}
CSingleton* CSingleton::getInstance(){
if(instance==null)//雙重判斷, 避免高併發時,產生多個實例(這個辦法會增加一點點開銷)
{
lock();
if(instance==null) instance=new CSingleton();
unlock();
}
return instance;
}