单例模式的实现与应用
单例模式是一种常见的设计模式,它确保一个类只有一个实例,并提供一个全局访问点来获取这个实例。在实际应用中,单例模式有多种实现方式,每种方式都有其优缺点。
简单单例实现及问题
最初的简单单例实现是让目标类继承自单例类,目标类有私有构造函数,静态 instance() 方法从单例类移到目标类,且 instance() 方法的参数列表要能接受传递给目标类私有构造函数的必要参数。
然而,这种简单实现存在固有设计缺陷,即无法保证单例自身的正确销毁。当应用程序终止时让操作系统回收内存,不会调用析构函数;选择多个句柄之一来删除内存,虽有可能,但需要协调,且违背了单例模式让单例在应用程序运行期间一直存在的通常应用场景。
另一种简单实现
为了改进上述问题,我们考虑使用静态局部内存的引用,而不是堆内存的指针来实现单例。以下是具体的代码实现:
class Singleton
{
private:
string data;
Singleton(string d); // private to prevent multiple
public: // instantiation
static Singleton &instance(string); // return reference
// destructor is called for the static local variable
// declared in
超级会员免费看
订阅专栏 解锁全文

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



