gpt4 book ai didi

c++ - 完美的单例设计模式

转载 作者:行者123 更新时间:2023-11-28 06:34:16 31 4
gpt4 key购买 nike

最近遇到一道题,设计完美的单色调图案。我通过使用一个静态实例进行设计,一个静态函数返回该实例,如下所示。

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 ;
}

这是一个完美的设计吗??单音模式的完美设计是什么意思???他对设计的期望是什么??

提前致谢。

最佳答案

没有完美的单例。事实上,是否存在任何有值(value)的单例存在一些疑问。

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

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

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

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

关于c++ - 完美的单例设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27009584/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com