C++单例模式实现

单例模式:单例模式通俗的讲就是对应一个类而言,所能实例化出来的对象只能有一个。

单例模式:饿汉式和懒汉式
饿汉式:在单例定义的时候就进行实例化,在访问量较大的情况下,采用饿汉式可以实现更好的性能。
懒汉式:尽可能的不要对单例进行实例化,适用于访问量很小的情况下。

单例模式的代码书写步骤:
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;
}

你可能感兴趣的:(设计模式,单例模式,c++,设计模式)