zoukankan      html  css  js  c++  java
  • 单例模式(C++)

    介绍

    单例模式,顾名思义,就是保证一个类只一个对象.

    单例模式可以分为懒汉模式和饿汉模式两种:

    • 懒汉模式:不到万不得已不去实例化对象,也就是在第一次使用到类实例时才会去实例化一个对象.访问量较小时,采用懒汉模式,可以达到时间换空间的效果.
    • 饿汉模式: 在定义单例对象时就初始化.访问量较大时,或者可能访问的线程较多时,采用饿汉模式,可以实现更好的性能.以空间换时间.

    示例

    懒汉模式:

    class Singleton {
    public:
        static Singleton* GetInstance();
    
    private:
        Singleton() {}
        Singleton(const Singleton&) = delete;
        Singleton& operator=(const Singleton&) = delete;
        
        static Singleton* instance_;
        static std::mutex mutex_;
    };
    
    Singleton* Singleton::instance_ = nullptr;
    std::mutex Singleton::mutex_;
    
    Singleton* Singleton::GetInstance() {
        if(instance_ == nullptr) {
            mutex_.lock();
            if(instance_ == nullptr) {
                instance_ = new Singleton();
            }
            mutex_.unlock();
        }
        
        return instance_;
    }
    

    饿汉模式:

    class Singleton {
    public:
        static Singleton* GetInstance();
    
    private:
        Singleton() {}
        Singleton(const Singleton&) = delete;
        Singleton& operator=(const Singleton&) = delete;
        
        static Singleton* instance_;
    };
    
    Singleton* Singleton::instance_ = new Singleton();
    
    Singleton* Singleton::GetInstance() {
        return instance_;
    }
    
  • 相关阅读:
    http_build_query(array) 中文乱码问题
    蒙层
    git删除本地和线上分支
    小程序Storage记录用户身份
    PHPExcel Allowed memory size of 内存泄漏解决办法
    抽奖帮助类
    linux查询并删除文件
    微信公众号H5,分享朋友,分享朋友圈处理
    mysql备份数据方式
    shell监控文件变化
  • 原文地址:https://www.cnblogs.com/xl2432/p/13140041.html
Copyright © 2011-2022 走看看