《设计模式的艺术》笔记 - 单例模式

介绍

单例模式优点是可以确保系统中只存在单个对象实例,缺点是不便扩展,一定程度上违背单一原则,既提供业务方法,又提供创建对象方法

饿汉式单例

在类加载的时候就创建好对象,获取对象时直接返回即可

cpp 复制代码
class EagerSingleton {
public:
    static EagerSingleton *getInstance() {
        return m_inst;
    }

private:
    EagerSingleton() {}

    static EagerSingleton *m_inst;
};

EagerSingleton *EagerSingleton::m_inst = new EagerSingleton();

懒汉式单例

在类加载的时候没有创建对象,第一次获取对象时根据需要创建对象并返回,此时需要考虑线程安全问题

cpp 复制代码
class LazySingleton {
public:
    static LazySingleton *getInstance() {
        if (s_inst == NULL) {
            std::lock_guard<std::mutex> lg(s_mtx);
            if (s_inst == NULL) {
                s_inst = new LazySingleton();
            }
        }
        return s_inst;
    }

private:
    LazySingleton() {}

    static LazySingleton *s_inst;
    static std::mutex s_mtx;
};

LazySingleton *LazySingleton::s_inst = NULL;
std::mutex LazySingleton::s_mtx;

饿汉式和懒汉式对比

|----------|----------------------------|----------------------------------|
| 实现方式 | 优点 | 缺点 |
| 饿汉式 | 简单,无须考虑线程安全,调用速度快 | 无论是否需要都创建了对象,资源利用效率不高,导致系统启动时间变长 |
| 懒汉式 | 系统启动时间减少,可以延迟创建对象,提高资源利用效率 | 需要处理线程安全问题,初始化期间有可能影响系统性能 |
[饿汉式和懒汉式优缺点]

IoDH技术

应该是java语言独有的,不确定性能如何

相关推荐
Hello_Embed7 小时前
STM32HAL 快速入门(二十):UART 中断改进 —— 环形缓冲区解决数据丢失
笔记·stm32·单片机·学习·嵌入式软件
咸甜适中7 小时前
rust语言 (1.88) 学习笔记:客户端和服务器端同在一个项目中
笔记·学习·rust
Grassto8 小时前
RAG 从入门到放弃?丐版 demo 实战笔记(go+python)
笔记
Magnetic_h8 小时前
【iOS】设计模式复习
笔记·学习·ios·设计模式·objective-c·cocoa
A阳俊yi9 小时前
设计模式——结构型模式
设计模式
周周记笔记11 小时前
学习笔记:第一个Python程序
笔记·学习
丑小鸭是白天鹅11 小时前
Kotlin协程详细笔记之切线程和挂起函数
开发语言·笔记·kotlin
潘达斯奈基~11 小时前
《大数据之路1》笔记2:数据模型
大数据·笔记
..过云雨12 小时前
05.【Linux系统编程】进程(冯诺依曼体系结构、进程概念、进程状态(注意僵尸和孤儿)、进程优先级、进程切换和调度)
linux·笔记·学习
咸甜适中12 小时前
rust语言 (1.88) egui (0.32.2) 学习笔记(逐行注释)(二十八)使用图片控件显示图片
笔记·学习·rust·egui