完美的单例设计模式

perfect singleton design pattern

本文关键字:设计模式 单例 完美      更新时间:2023-10-16

最近我遇到了一个问题,设计完美的单音模式。我通过使用一个静态实例进行设计,一个静态函数返回该实例,如下所示。

ST* ST::instance = NULL;
ST* ST::getInstance()
{
    mutex.lock();
    if(!instance)
       instance  = new ST();
    mutex.lock();
    return instance ;
}

他要求我在不使用互斥锁的情况下编写(不使用任何同步机制编写完美的单例),然后我更改如下。

ST* ST::instance = new ST();
ST* ST::getInstance()
{
    return instance ;
}

这是一个完美的设计吗??他所说的单色调图案的完美设计是什么意思???他对设计的期望是什么?

提前谢谢。

没有完美的单例。事实上,是否有任何单例

值得一提,这是个问题。

也就是说,在C++中,Meyers Singleton通常是问题最少的。它的核心大致是这样的:

static T &get_instance() { 
    static T t;
    return t;
}    

因此,基本思想是将目标类型的单个实例定义为静态成员函数的静态本地实例。该静态成员函数返回对该对象的引用。所有singleton的构造函数都是私有的,所以只有成员函数才能使用它们来创建(或销毁)该类的对象。实际上,这意味着只有一个静态成员函数可以创建一个实例,并且它只创建一个静态实例,因此所有使用都是该实例。

当然,如果你想要足够糟糕,你可以返回一个指针而不是一个引用,但这很少是一个好主意(可能不是"完美"的好候选者)。