当前位置: 首页 > news >正文

设计模式1 ——单例模式

定义

在 C++ 里,单例模式是一种常用的设计模式,其目的是保证一个类仅存在一个实例,并且为该实例提供一个全局访问点。

实现

1 饿汉式
class Singleton {
private:static Singleton instance;Singleton() = default;~Singleton() = default;Singleton(const Singleton&) = delete;Singleton& operator=(const Singleton&) = delete;public:static Singleton& getInstance() {return instance;}
};// 在程序入口之前就完成实例的初始化
Singleton Singleton::instance;
  • 实例在首次使用时才会被创建(延迟初始化)。
  • 缺点是在多线程环境下不安全,可能会创建出多个实例

懒汉式

class Singleton {
private:static Singleton* instance;Singleton() = default;~Singleton() = default;Singleton(const Singleton&) = delete;Singleton& operator=(const Singleton&) = delete;public:static Singleton* getInstance() {if (instance == nullptr) {instance = new Singleton();}return instance;}
};Singleton* Singleton::instance = nullptr;
  • 实例在首次使用时才会被创建(延迟初始化)。
  • 缺点是在多线程环境下不安全,可能会创建出多个实例。

懒汉式汉式线程安全双锁

#include <mutex>class Singleton {
private:static Singleton* instance;static std::mutex mutex_;Singleton() = default;~Singleton() = default;Singleton(const Singleton&) = delete;Singleton& operator=(const Singleton&) = delete;public:static Singleton* getInstance() {if (instance == nullptr) {std::lock_guard<std::mutex> lock(mutex_);if (instance == nullptr) {instance = new Singleton();}}return instance;}
};Singleton* Singleton::instance = nullptr;
std::mutex Singleton::mutex_;

相关文章:

  • 2025年保姆级教程:Powershell命令补全、主题美化、文件夹美化及Git扩展
  • 大模型知识
  • 02_redis分布式锁原理
  • qt浏览文件支持惯性
  • 前端(小程序)学习笔记(CLASS 1):组件
  • AI与产品架构设计(7):实时数据驱动下的AI架构设计:从流数据到智能决策
  • JC/T 2848-2024 玻璃纤维增强石膏(GRG)装饰制品检测
  • 打开小程序提示请求失败(小程序页面空白)
  • JS进阶学习04
  • 26、AI 预测性维护 (燃气轮机轴承) - /安全与维护组件/ai-predictive-maintenance-turbine
  • python查询elasticsearch 获取指定字段的值的list
  • 安卓蓝牙frameworks/base/core/java/android/bluetooth这个路径下文件的作用
  • java day14
  • [Java恶补day2] 49. 字母异位词分组
  • 深入理解 Pre-LayerNorm :让 Transformer 训练更稳
  • Java虚拟机栈
  • leetcode hot100刷题日记——7.最大子数组和
  • 计算机视觉与深度学习 | Python实现CEEMDAN-ISOS-VMD-GRU-ARIMA时间序列预测(完整源码和数据)
  • 目标检测基础知识
  • 目标检测135个前沿算法模型汇总(附源码)!
  • 是想建个网站 用本地做服务器/百度一下百度搜索网站