什么是单例模式
是设计模式的一种,目的是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被程序内所有模块共享使得类的一个对象成为系统中的唯一实例。
代码模板
Singleton.h
#ifndef _SINGLETON_
#define _SINGLETON_
class Singleton
{
public:
static Singleton* Initialize();
static void Uninitialize();
static Singleton* GetInstance();
private:
Singleton();
~Singleton();
private:
static Singleton* m_pInstance;
};
#endif//_SINGLETON_
Singleton.cpp
#include "Singleton.h"
#include <stdlib.h>
Singleton* Singleton::m_pInstance = NULL;
Singleton::Singleton()
{
//
}
Singleton::~Singleton()
{
//
}
Singleton* Singleton::Initialize()
{
return Singleton::GetInstance();
}
void Singleton::Uninitialize()
{
if (m_pInstance != NULL)
{
delete m_pInstance;
m_pInstance = NULL;
}
}
Singleton* Singleton::GetInstance()
{
if (m_pInstance == NULL)
{
m_pInstance = new Singleton;
}
return m_pInstance;
}
注意点
1、私有的构造及析构函数。
2、GetInstanse函数并没有锁处理,所以在程序刚开始时调用Initialize,实例在程序刚运行时就已创建,就不需要考虑GetInstance函数可能被多线程调用而去做互斥处理。
3、在程序离开前调用Uninitialize。