单件模式:确保一个类只有一个实例,并提供一个全局访问点。
1、单例模式实现
#include <windows.h>
#include <iostream>
class Singleton
{
public:
static Singleton* GetInstance() /* 单例全局访问点 */
{
if (NULL == _pUniqueInstance) /* 延迟初始化。若使用立刻创建方式,就不会有多线程问题,但是程序启动后就会占用资源。 */
{
CRITICAL_SECTION cs; /* 防止多线程冲突 */
InitializeCriticalSection(&cs);
EnterCriticalSection(&cs);
if (NULL == _pUniqueInstance)
{
_pUniqueInstance = new Singleton();
}
LeaveCriticalSection(&cs);
DeleteCriticalSection(&cs);
}
return _pUniqueInstance;
}
private:
Singleton() {} /* 构造器必须为私有的 */
private:
static Singleton *_pUniqueInstance;
};
Singleton *Singleton::_pUniqueInstance = NULL; /* 初始化类static变量 */
2、测试代码
int main()
{
std::cout<<"Singleton Patten."<<std::endl<<std::endl;
Singleton *pSingle = Singleton::GetInstance();
std::cout<<"单例指针:"<<pSingle<<std::endl<<std::endl;
return 0;
}