单例模式

描述:
保证该类只有一个实例, 并提供全局范围内对该实例的访问接口.

单例模式又有懒汉模式和饿汉模式之分.
(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(UMyGameInstance::Instance());
    } 
    return m_pSingleton;
}

你可能感兴趣的:(单例模式)