42、C++设计模式:单例模式与pImpl模式深度解析

C++设计模式:单例模式与pImpl模式深度解析

1. 单例模式的扩展与应用

在多线程编程中,单例模式的线程安全是一个潜在问题。例如,若要使用多线程编程,就需要确保静态的 President::instance() 方法具有原子性,即不可中断。可以通过对静态方法进行仔细的同步访问来实现这一点。

当前单例模式的实现存在一个缺点,即只能有一个单例的派生类能有效利用单例类。这是因为单例类带有外部变量定义,用于支持类内的静态数据成员。代表 theInstance 的静态数据成员(使用外部变量 Singleton *Singleton::theInstance 实现)只能设置为一个单例实例,而不是每个类一个,只有一组外部变量为 theInstance destroyer 这些关键的单例数据成员创建内存,这就是问题所在。

为了解决这个问题,可以指定一个 Registry 类来跟踪应用单例模式的类。在实现中, Registry 类会将采用单例模式的类名与指向每个注册类的唯一允许实例的单例指针进行配对。每个目标类仍将从 Singleton 派生(以及根据设计需要从其他类派生)。

Singleton 派生的每个类中的 instance() 方法将按以下方式修订:
- 检查单例是否已存在 :在 instance()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值