当前位置: 首页 > news >正文

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# 单例模式详解

http://www.lryc.cn/news/257216.html

相关文章:

  • 【Android12】Android Framework系列--AMS启动Activity分析
  • Hive的几种排序方式、区别,使用场景
  • 设计模式-外观模式
  • Kubernetes实战(九)-kubeadm安装k8s集群
  • 【HarmonyOS开发】拖拽动画的实现
  • 提高问卷填写率的策略与方法
  • 软件工程考试复习
  • PHP基础 - 类型比较
  • 张正友相机标定法原理与实现
  • 【LeetCode】2723. 两个 Promise 对象相加
  • 设计模式--命令模式的简单例子
  • 排序算法之六:快速排序(非递归)
  • 【概率方法】重要性采样
  • MyBatis 四大核心组件之 StatementHandler 源码解析
  • 用Guava做本地缓存示例
  • Django多对多ManyToManyField字段
  • docker-centos中基于keepalived+niginx模拟主从热备完整过程
  • 软件科技成果鉴定测试需提供哪些材料?
  • 办公word-从不是第一页添加页码
  • Android笔记(十七):PendingIntent简介
  • 为 Compose MultiPlatform 添加 C/C++ 支持(2):在 jvm 平台使用 jni 实现桌面端与 C/C++ 互操作
  • 【PyTorch】卷积神经网络
  • qt可以详细写的项目或技术
  • 操作系统笔记——储存系统、文件系统(王道408)
  • 基于Html+腾讯云播SDK开发的m3u8播放器
  • uniapp小程序分享为灰色
  • python:五种算法(OOA、WOA、GWO、PSO、GA)求解23个测试函数(python代码)
  • DIP——添加运动模糊与滤波
  • SQL Server查询计划(Query Plan)——SQL处理过程
  • 【动手学深度学习】(十二)现代卷积神经网络