У меня есть требование иметь только один экземпляр класса в любой данный момент времени. Синглтон - очевидный кандидат. Но у меня есть некоторые другие условия, которые не характерны для Синглтона.C++ Singleton design question
- Срок службы одиночного толка не является временем жизни программы. Этот объект должен создаваться каждый раз, когда я вхожу в конкретное состояние и уничтожается, когда я покидаю состояние. В течение всей продолжительности состояния я не могу создать другой экземпляр класса.
- Каждый раз, когда я вхожу в состояние и создаю новый экземпляр, мне нужно передать переменную в синглтон. Его номер, основанный на выборе пользователя.
Так моя реализация имеет следующие статические функции -
// 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();
Сейчас эта реализация является одним из основного объезда от традиционной реализации одноплодной.
Есть ли проблемы с такой реализацией?
Есть ли лучшие альтернативы?
Было бы мое решение слишком. Другая возможность заключается в том, чтобы сделать этого менеджера синглом, но только если это решение не применяется. В общем, избегайте одиночных игр, если сможете. – Emile