【发布时间】:2010-08-15 14:51:39
【问题描述】:
我有四个班级,我们称之为 S1、S2、S3 和 S4。这些类是单例;每个都有一个 getInstance 和一个 finalize 方法 - 以及一个实例私有变量。
现在,为了避免重复 finalize 和 getInstance 方法,我正在尝试创建一个 SingletonMixin 类,例如:
template<class T> class SingletonMixin
{
public:
static T* getInstance();
private:
static T* instance;
};
这里的问题是:如何实例化单例类并保持其构造函数私有?
编辑
(澄清)
我的意思是,我该怎么做:
template<class T> T* SingletonMixin<T>::instance = 0;
template<class T> T* SingletonMixin<T>::getInstance()
{
if (instance == 0)
{
instance = T();
}
return instance;
};
但使用私有 T 构造 T()
谢谢!
【问题讨论】:
-
简单的答案是:不要。单例是一种可怕的设计模式,应尽可能避免。
-
四个单例类?大多数人都想不出一个适当地使用单例。
-
@jalf: 只是一个练习,我正在学习语言。
-
@jalf:几年前我确实找到了一个用途。可以想象,在我退休之前,我会找到单身人士的另一种用途。
标签: c++ design-patterns singleton mixins