一文读懂: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 函数,下文也是着重对该函数进行讲解。

单例模式用在哪里?

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

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

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

相关推荐
倔强的石头1062 分钟前
【Linux指南】进程通信系列(二):匿名管道 —— pipe 的本质、fork 继承与四种读写规则
java·linux·运维
调试优选官7 分钟前
2026年IoT物联网开发赛道年度榜单深度解析:D-coding物联网系统定制与源码交付能力专项解读
java·物联网·struts·iot·开发经验
Shadow(⊙o⊙)8 分钟前
仿muduo实现高并发服务器——时间轮timewheel.cpp
c语言·c++
木井巳9 分钟前
【动态规划】三步问题
java·算法·leetcode·动态规划·推荐算法
小张成长计划..12 分钟前
【Linux】25:线程概念和控制
java·linux·jvm
蛋蛋的就会顺顺的9 小时前
hot100 p0——栈,贪心算法,动态规划
java·前端·javascript·算法·leetcode·力扣
需要82610 小时前
Spring Bean 生命周期:从实例化到销毁的完整钩子
java·后端·spring
小 黄 鸡10 小时前
HashMap 面试必会知识点详解(JDK 8)
java·面试·职场和发展
伯恩bourne12 小时前
Spring Boot Bean 注册的两种方式:@Component 家族 vs @Configuration + @Bean
java·spring boot·后端
silvamux_12 小时前
curl 测试 OpenAI 兼容 API 的完整流程
java·人工智能·缓存·ai·oneapi