一文读懂:C++中单例模式的实现

单例模式的实现

单例模式是一个比较模板化的设计模式,通常在实际应用中可以直接复用写好的框架。

如下是一种典型的模式:

复制代码
class Singleton {
private:
    static Singleton* s_instancePtr;

public:
    static Singleton* instance() {
        // TODO
        return s_instancePtr;
    }

private:
    Singleton() = default;
    ~Singleton() = default;

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

Singleton* Singleton::s_instancePtr = nullptr;

这里为了防止调用者突破单例,需要两层防护:

  1. 将需要的构造函数设为 private
  2. 将拷贝构造函数和拷贝赋值显示删除

对于这个全局的访问点,我们需要设置一个 pubilc 的 static 函数,下文也是着重对该函数进行讲解。

单例模式用在哪里?

配置管理‌:比如系统配置信息,一份就够了,保证所有模块读到的配置一样。

‌资源池‌:像数据库连接池、线程池,多了浪费资源,限制数量更高效。

‌日志记录‌:所有日志写到同一个地方,避免信息冗余混乱,方便统一管理。‌‌‌

相关推荐
吱奇物语11 小时前
Maven高级—分模块设计与开发、继承、聚合和私服
java·maven
alwaysrun11 小时前
C++之现代易用JSON库nlohmann
c++·json·序列化·nlohmann
艾iYYY11 小时前
详解string类的基础用法
c语言·开发语言·c++·算法
c++之路11 小时前
责任链模式(Chain of Responsibility Pattern)
java·前端·责任链模式
woniu_buhui_fei11 小时前
JDK8 开发最常用的新特性
java·开发语言
逸Y 仙X11 小时前
Elasticsearch安全集群构建的常见问题
java·大数据·安全·elasticsearch·搜索引擎·全文检索
huahailing102411 小时前
Java基于【S3】协议实现游标分页查询
java·开发语言
小陶来咯11 小时前
图生图 (Image-to-Image) :Python 和 C++ 两种实现方式
java·c++·python
Tokai_Teio_111 小时前
XYCTF 2024 web(1)
java·服务器·开发语言