Hap*_*cky 4 c++ singleton constructor
我要求在任何给定的时间点只有一个类的单个实例.单身人士是明显的候选人.但我还有其他一些不典型的单身人士的情况.
所以我的实现有以下静态函数 -
// 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();
Run Code Online (Sandbox Code Playgroud)
现在,这种实现是传统单例实现的主要迂回.
这种实施有什么问题吗?
还有更好的选择吗?
Jam*_*lis 12
如果每次进入给定状态时都创建一个实例,并在每次离开该状态时将其销毁,那么让实例归属于管理状态转换(或者知道状态的其他实体)所有者更有意义.转换).
例如,您可以将一个指向实例的智能指针作为状态管理器的成员变量.当您转换到状态时,您可以将其初始化为新实例,当您转出状态时,您可以销毁该实例.
在我看来,这将比使用单一设计(反)模式更清洁,更可取.
这种实施有什么问题吗?
是的.问题是这不是Singleton,因为它不是"Singleton"模式的全部内容.这是一个简单的变量,是你进入和离开的那个州的本地变量.
实际上,Singletons只是美化的全局变量,在应用程序的整个生命周期中都存在,并且无论如何都应该尽可能地被阻止.你的"单身人士"不是全球性的,而是一个地方性的.
| 归档时间: |
|
| 查看次数: |
420 次 |
| 最近记录: |