单例模式:单例模式通俗的讲就是对应一个类而言,所能实例化出来的对象只能有一个。
单例模式:饿汉式和懒汉式
饿汉式:在单例定义的时候就进行实例化,在访问量较大的情况下,采用饿汉式可以实现更好的性能。
懒汉式:尽可能的不要对单例进行实例化,适用于访问量很小的情况下。
单例模式的代码书写步骤:
1.首先讲构造函数全部设置为私有
2.设置一个静态的本类的指针,类内声明类外初始化
3.定义一个接口提供对于本类唯一的实例进行访问的接口,也设置为static函数,类内声明类外初始化。
饿汉式:
class Singleton
{
public:
static Singleton* getObject();
private:
Singleton() {}
Singleton(const Singleton&) = delete;
Singleton& operator=(const Singleton&) = delete;
static Singleton* m_Singleton;
};
Singleton* Singleton::m_Singleton = new Singleton();
Singleton* Singleton::getObject() {
return m_pSingleton;
}
懒汉式
std::mutex mt;//通过锁来确保对于唯一的成员变量的访问是安全的
class Singleton
{
public:
static Singleton* getObject();
private:
Singleton() {}
Singleton(const Singleton&) = delete;
Singleton& operator=(const Singleton&) = delete;
static Singleton* m_Singleton;
};
Singleton* Singleton::m_pSingleton = NULL;
Singleton* Singleton::getObject()
{
if (m_Singleton == NULL)
{
mt.lock();
if (m_Singleton == NULL)
{
m_Singleton = new Singleton();
}
mt.unlock();
}
return m_Singleton;
}



