单例模式——懒汉模式

发布时间 2023-08-24 13:44:03作者: 木村拓哉的村

1、定义:
单例模式是一种创建型设计模式,它保证一个类只有一个实例,并提供一个全局访问点。懒汉式单例模式是指在第一次访问时才创建唯一实例,这种实现方式在实例创建开销较大或者实例使用不频繁时,可以减少不必要的资源开销。但在多线程环境下,懒汉式单例模式的实现需要加上synchronized关键字才能保证线程安全 。
2、例子

点击查看代码
// 单例模式
class Singleton
{
public:
    static Singleton* getInstance()
    {
        if (instance == nullptr)
        {
            instance = new Singleton();
        }
        return instance;
    }

private:
    Singleton() {}
    Singleton(const Singleton&) = delete;
    Singleton& operator=(const Singleton&) = delete;

    static Singleton* instance;
};

Singleton* Singleton::instance = nullptr;

// 懒汉式单例模式
class LazySingleton
{
public:
    static LazySingleton* getInstance()
    {
        if (instance == nullptr)
        {
            instance = new LazySingleton();
        }
        return instance;
    }

private:
    LazySingleton() {}
    LazySingleton(const LazySingleton&) = delete;
    LazySingleton& operator=(const LazySingleton&) = delete;

    static LazySingleton* instance;
};

LazySingleton* LazySingleton::instance = nullptr;