我正在制作游戏引擎,我正在使用库来执行各种任务。例如,我使用需要初始化的FreeType,获取管理器,并且在我不使用它之后,我必须对它进行初始化。当然,它只能初始化一次,只能在初始化后才能初始化。单身经理类,更好的设计?
我想出什么了(只是举个例子,不是 “真正的” 代码[但可能是有效的C++代码):
class FreeTypeManager
{
private:
FreeTypeManager() {} // Can't be instantiated
static bool initialized;
static TF_Module * module; // I know, I have to declare this in a separate .cpp file and I do
public:
static void Initialize()
{
if (initialized) return;
initialized = true;
FT_Initialize();
FT_CreateModule(module);
}
static void Deinitialize()
{
if (!initialized) return;
initialized = false;
FT_DestroyModule(module);
FT_Deinit();
}
};
而对于每一个管理者创建(FreeType的,AudioManager,EngineCore,DISPLAYMANAGER )它几乎是一样的:没有实例,只是静态的东西。我可以看到,这可能是一个糟糕的设计实践,每次都要重写这个框架。也许有更好的解决方案。
改用singleton代替它会好吗?还是有适合我的问题的模式?
这就是我要做的。谢谢! –