单例:保证一个类只能有一个实例,并提供一个全局唯一的访问
有以下特征:
它有一个指向唯一实例的静态指针,并且是私有的;
它有一个公有的函数,可以获取这个唯一的实例,并且在需要的时候创建该实例;
它的构造函数是私有的,这样就不能从别处创建该类的实例。
class DataBase{
private:
DataBase();
static DataBase* m_pInstance;
// 禁止拷贝和赋值
DataBase(DataBase const &other) = delete;
DataBase& operator = (DataBase const &other) = delete;
public:
static DataBase* getInstance();
static void destory();
};
DataBase* DataBase::m_pInstance = nullptr;
DataBase::DataBase(){}
DataBase* DataBase::getInstance(){
if(!m_pInstance){
m_pInstance = new DataBase;
}
return m_pInstance;
}
void DataBase::destory(){
if(m_pInstance){
delete m_pInstance;
m_pInstance = nullptr;
}
}