C++设计模式:单例模式与pImpl模式深度解析
1. 单例模式的扩展与应用
在多线程编程中,单例模式的线程安全是一个潜在问题。例如,若要使用多线程编程,就需要确保静态的 President::instance() 方法具有原子性,即不可中断。可以通过对静态方法进行仔细的同步访问来实现这一点。
当前单例模式的实现存在一个缺点,即只能有一个单例的派生类能有效利用单例类。这是因为单例类带有外部变量定义,用于支持类内的静态数据成员。代表 theInstance 的静态数据成员(使用外部变量 Singleton *Singleton::theInstance 实现)只能设置为一个单例实例,而不是每个类一个,只有一组外部变量为 theInstance 和 destroyer 这些关键的单例数据成员创建内存,这就是问题所在。
为了解决这个问题,可以指定一个 Registry 类来跟踪应用单例模式的类。在实现中, Registry 类会将采用单例模式的类名与指向每个注册类的唯一允许实例的单例指针进行配对。每个目标类仍将从 Singleton 派生(以及根据设计需要从其他类派生)。
从 Singleton 派生的每个类中的 instance() 方法将按以下方式修订:
- 检查单例是否已存在 :在 instance()
超级会员免费看
订阅专栏 解锁全文

710

被折叠的 条评论
为什么被折叠?



