只是为了实验,我正在玩单例模式。我想知道是否可以扩展通常的单例类
class A
{
private:
static A* m_instance;
A();
public:
static A* GetInstance();
}
A::A(){ ...some code}
A* A::m_instance = NULL;
A* A::GetInstance()
{
if( m_instance == NULL ) m_instance = new A();
return m_instance;
}
到“多个单例”类,例如
class B
{
private:
static vector<B*> m_instances;
B();
public:
static B* GetInstance( unsigned int n = 0);
static B* GetNewInstance();
}
B* B::GetInstance( int n)
{
if( n < m_instances.size() ) return m_instances.at(n);
//Create a new instance and append it to m_instances
B * temp = new B();
m_instances.push_back( temp );
return temp;
}
B* B::GetNewInstance()
{
B * temp = new B();
m_instances.push_back( temp );
return temp;
}
我在这个模式中发现的主要问题是析构函数的实现,因为每个实例都包含实例的向量,所以如果我删除一个实例,我也会删除包含所有其他实例的向量。
有可能完成这项工作吗?或者它只是一个错误的模式,简单明了?