C++23种设计模式之《单例模式》

单例模式也称为单件模式、单子模式,可能是使用最广泛的设计模式。其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。如系统的日志输出,GUI应用必须是单鼠标,MODEM的联接需要一条且只需要一条电话线,操作系统只能有一个窗口管理器,一台PC连一个键盘。单例模式有两种:饿汉式单例类和懒汉式单例类。

适用性:

  单例模式常常与工厂模式结合使用,因为工厂只需要创建产品实例就可以了,在多线程的环境下也不会造成任何的冲突,因此只需要一个工厂实例就可以了。

优点:

  1.减少了时间和空间的开销(new实例的开销)。

  2.提高了封装性,使得外部不易改动实例。

缺点:

  1.懒汉式是以时间换空间的方式。

  2.饿汉式是以空间换时间的方式。

饿汉式单例类

//外部初始化 before invoke main
const Singleton* Singleton::m_instance = new Singleton;

class Singleton
{
private:
    static const Singleton* m_instance;
    Singleton(){}
public:
    static const Singleton* getInstance()
    {
        return m_instance;
    }
};

懒汉式单例类

class Singleton
{
private:
    st
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

C++编程指南

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值