完美的单例设计模式
perfect singleton design pattern
最近我遇到了一个问题,设计完美的单音模式。我通过使用一个静态实例进行设计,一个静态函数返回该实例,如下所示。
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
的构造函数都是私有的,所以只有成员函数才能使用它们来创建(或销毁)该类的对象。实际上,这意味着只有一个静态成员函数可以创建一个实例,并且它只创建一个静态实例,因此所有使用都是该实例。
当然,如果你想要足够糟糕,你可以返回一个指针而不是一个引用,但这很少是一个好主意(可能不是"完美"的好候选者)。
相关文章:
- 初学者C++线程安全单例设计
- 设计许多单例代码结构的更好方法
- C++单例模式代码无法运行,不知道为什么?
- 使用工厂模式实施单例
- 工厂模式和单例模式:未定义的引用
- C++:单例类设计(错误:未解析的外部符号)
- 使用静态和避免单例模式声明全局变量
- 如何在 c++ 中使用单例模式时编写 cmake 文件
- C++ 单例设计模式替代方案
- 可派生类的单例模式
- 这是单例模式的正确实现吗?
- 懒惰的初始化使用单例模式
- 单例设计模式 - 显式声明类外的构造函数
- 在单例设计模式中使用复制构造函数和赋值运算符
- 完美的单例设计模式
- 如何避免这种类似单例的设计模式
- 在什么情况下,单例设计模式可能会生成同一单例类的多个实例
- 不是全局单例设计模式
- 多重继承和单例设计模式
- 设计模式——在c++中,当实现(一组单例)直接从它们的编译单元在某个注册表中自注册时,它被称为什么?