Unity 实现单例模式

目录

基本概念

饿汉模式(推荐)

懒汉模式:


基本概念

单例模式:类只有一个实例,一般使用static来实现单例模式;

比如:有一个Test类,实现了单例,假设这个唯一的实例名为SingTonle,实例在类内被实现并被static修饰,如此就可以直接用Test.SingTonle来访问这个实例;

饿汉模式(推荐)

有很多种方式可以实现单例,最简单有效的是,饿汉模式

优点

简洁高效并且线程安全;

缺点

不管程序需不需要用这个单例,在类被加载的时候都会创建这个实例,造成内存占用和浪费

就是未实现"懒加载";但是影响不会很大,

注意:

上面这个程序不要使用默认的访问器,会报错;(报错:没有获取到实例化对象)

因为自动属性只能获取简单数据类型的字段,例如:int ,float,bool等,使用自己实现的类无法自动获得;


懒汉模式:

这个是最简单的懒汉模式;

但是非线程安全;(两个线程同时执行,有可能两个线程同时判断singLeton==null,而导致各自创建一个实例)

然后就有线程安全的单例模式,这里复制一份经典的线程安全的代码(涉及到线程和锁的相关知识):

public sealed class Singleton
{
    private static volatile Singleton _instance;
    private static readonly object _lockObject = new Object();

    public static Singleton Instance
    {
        get
        {
            if (_instance == null)
            {
                lock (_lockObject)
                {
                    if (_instance == null)
                    {
                        _instance = new Singleton();
                    }
                }
            }
            return _instance;
        }
    }
}

 总结:

拿游戏举例:

饿汉模式:

在进入游戏前将游戏资源实例化并且加载好,会造成进入游戏慢的现象。

懒汉模式:

在游戏游玩的某个时刻,需要用到某个游戏资源时再创建这个游戏资源,会造成掉帧或者游戏卡顿的现象;

一般在使用时用饿汉模式就足够了,当然按需选择;

参考博客:

Unity单例模式最佳实践(附代码)

[C#.NET 拾遗补漏]06:单例模式最佳实践

C# 单例模式详解

相关推荐

  1. Unity 模式

    2023-12-10 18:34:06       11 阅读
  2. C++ 实现模式

    2023-12-10 18:34:06       31 阅读
  3. C++实现模式

    2023-12-10 18:34:06       13 阅读
  4. Python实现模式

    2023-12-10 18:34:06       13 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-10 18:34:06       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-10 18:34:06       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-10 18:34:06       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-10 18:34:06       20 阅读

热门阅读

  1. 每日一道算法题 3(2023-12-11)

    2023-12-10 18:34:06       27 阅读
  2. 模电第一章-电路基本概念以及基本定律

    2023-12-10 18:34:06       38 阅读
  3. 笙默考试管理系统-MyExamTest----codemirror(51)

    2023-12-10 18:34:06       35 阅读
  4. “==”和“equals”的区别

    2023-12-10 18:34:06       42 阅读
  5. vscode插件webview和插件通信

    2023-12-10 18:34:06       41 阅读
  6. 大模型应用_chatgpt-on-wechat

    2023-12-10 18:34:06       40 阅读
  7. ESP32网络编程-OTA方式升级固件(基于Web浏览器)

    2023-12-10 18:34:06       38 阅读
  8. 如何选择Docker基础镜像

    2023-12-10 18:34:06       28 阅读
  9. 代码随想录 70. 爬楼梯

    2023-12-10 18:34:06       32 阅读
  10. 【前端设计模式】之责任链模式

    2023-12-10 18:34:06       49 阅读
  11. SAP-PP:超实用的表PP顾问必备

    2023-12-10 18:34:06       32 阅读