我有一个需求,需要在任何时刻只有一个类的实例存在。Singleton是显而易见的选择。
但是我有一些条件并不是典型的Singleton所能满足的。
1. Singleton的生命周期并不是整个程序的生命周期。这个对象必须在我进入特定状态时创建,并且在离开状态时销毁。在整个状态期间,我不能创建类的另一个实例。
2. 每次进入状态并创建新的实例时,我需要向Singleton传递一个变量。这是一个数字,基于用户的选择。
因此,我的实现具有以下静态函数 -
但是我有一些条件并不是典型的Singleton所能满足的。
1. Singleton的生命周期并不是整个程序的生命周期。这个对象必须在我进入特定状态时创建,并且在离开状态时销毁。在整个状态期间,我不能创建类的另一个实例。
2. 每次进入状态并创建新的实例时,我需要向Singleton传递一个变量。这是一个数字,基于用户的选择。
因此,我的实现具有以下静态函数 -
// To be called exactly once, everytime I enter the state
void MySingleton::CreateInstance(size_t count);
// To be called any no. of times during the state
MySingleton * MySingleton::GetInstance();
// To be called exactly once, when leaving the state.
void MySingleton::DestroyInstance();
现在这种实现方式与传统的单例实现大相径庭。
这种实现方式是否存在问题?
有没有更好的替代方案?