單例模式

描述:
保證該類只有一個實例, 并提供全局范圍內對該實例的訪問接口.

單例模式又有懶漢模式和餓漢模式之分.
(1) 餓漢模式: 在系統啟動之初就創建完成, 并且和整個系統的生命周期一致.
(2) 懶漢模式: 第一次使用的時候創建, 之后一直存在.
這兩種方式是典型的空間和時間的考量, 餓漢模式是用空間換時間, 把單例的初始化放在了系統啟動時刻,但一直占用內存空間.

#pragma once
#include "MySingleton.generated.h"

UCLASS(BlueprintType, Blueprintable)
class UMySingleton : public UObject
{
    GENERATED_BODY()
public:
    UMySingleton(const FObjectInitializer& ObjectInitializer);
    static UMySingleton* Instance();

private:
    static UMySingleton* m_pSingleton;
};
#include "MySingleton.h"
#include "MyGameInstance.h"

UMySingleton* UMySingleton::m_pSingleton = nullptr;


UMySingleton::UMySingleton(const FObjectInitializer& ObjectInitializer)
    :Super(ObjectInitializer)
{

}

UMySingleton* UMySingleton::Instance()
{
    if (m_pSingleton==nullptr) {
        m_pSingleton = NewObject<UMySingleton>(UMyGameInstance::Instance());
    } 
    return m_pSingleton;
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。