我实现了 Singleton design pattern在我的代码中。
假设是:
class Singleton
{
Singleton () {}
static Singleton* s;
public:
static Singleton* Get () {
if (!s)
s = new Singleton ();
return s;
}
};
令我困惑的是这种模式的“初始化”。 在 .cpp 中,我输入:
SingletonPointer* SingletonClass::s (0);
但我不明白如何访问定义s
,因为它是private
。
这怎么可能?
TIA, 吉尔
最佳答案
使用单例模式的最佳方式是完全不使用它。
单例为什么不好的简要总结:
- 它们是具有特殊限制的全局变量。出于自己的原因,全局变量已经够糟糕了;让他们成为单例只会放大坏处。
- 如果您真的只需要一个对象的一个实例,那么就创建一个。如果您需要一种特殊的设备来确保您不会制造超过一个,那么您的代码的语义就有问题了。将其设为单例并不能解决问题,它只会用新问题掩盖它。
- 单例不适合线程。线程已经够硬了。不要让它们变得更难。
使用单例不会解决任何问题。它只是将错误的语义应用于现有代码,使该代码的 future 扩展变得困难或不可能(如果你明天需要两个怎么办?),并增加了新问题。长话短说,就是不要使用它们。
关于c++ - 单例初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5636334/