单例模式

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

单例模式又有懒汉模式和饿汉模式之分.
(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;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容