我正在製作遊戲引擎,我正在使用庫來執行各種任務。例如,我使用需要初始化的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代替它會好嗎?還是有適合我的問題的模式?
這就是我要做的。謝謝! –