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

介绍

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

饿汉式单例

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

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语言独有的,不确定性能如何

相关推荐
源远流长jerry1 小时前
常用设计模式
设计模式
z26373056111 小时前
六大设计模式--OCP(开闭原则):构建可扩展软件的基石
设计模式·开闭原则
wangbaowo3 小时前
MySQL数据库下篇
数据库·经验分享·笔记·学习·mysql·安全
chennalC#c.h.JA Ptho3 小时前
生成了一个AI算法
经验分享·笔记·aigc
麻雀无能为力4 小时前
C++自学笔记 makefile
笔记
五花肉村长4 小时前
Linux-Ext系列文件系统
linux·运维·服务器·c++·笔记·visual studio
麦田里的稻草人w5 小时前
拍摄学习笔记【前期】(一)曝光
笔记·学习
C++ 老炮儿的技术栈5 小时前
C++中什么是函数指针?
c语言·c++·笔记·学习·算法
再睡一夏就好5 小时前
C语言常见的文件操作函数总结
c语言·开发语言·c++·笔记·学习笔记
Alessio Micheli7 小时前
国债收益率、需求与抛售行为的逻辑解析
笔记