单例模式在需要控制实例数量并保证访问一致性的场景中非常有用。它常见于管理全局状态、配置设置和共享资源等方面。在实现单例模式时,要注意线程安全问题,特别是在多线程应用程序中。合理使用单例模式,可以提高代码的可维护性和系统的性能。
有两个要点:
保证只有一个实例
private static onlyOne instance; // 单例实例 instance为约定俗成的名字而已 public void awake() { instance = this; }
提供一个全局访问点
public void WriteFile() { Debug,log("写入文件"); }
外部代码访问的时候则
onlyOne.instance.WriteFile();
1. 单例模式(Singleton Pattern)
1.1 定义
单例模式是一种设计模式,用于确保一个类只有一个实例,并提供一个全局访问点。通常用于控制对资源的访问(例如线程、文件处理、数据库连接等),避免重复创建带来的资源浪费。
1.2 实现方式
在 C# 中,单例模式通常通过以下几个步骤来实现:
- 私有构造函数:防止外界通过 new 关键字创建该类的实例。
- 私有静态实例:维护一个静态变量,用于存储单例的实例。
- 公共静态方法:提供一个全局访问方法,当需要实例时返回该静态实例。
1.3 在 ObjectPool 中的应用
在 ObjectPool 类中,单例模式通过以下代码实现:
private static ObjectPool _instance; // 单例实例 private ObjectPool() {
pool = new Dictionary<ObjType, Queue<GameObject>>();
prefabs = new Dictionary<ObjType, GameObject>();
}
public static ObjectPool GetInstance() {
if (_instance == null) { _instance = new ObjectPool(); // 创建新的对象池实例
}
return _instance; // 返回单例实例 }
- private ObjectPool() 使构造函数对外不可见,确保不能通过 new 关键字实例化。
- private static ObjectPool _instance 用于存储单例对象。
- public static ObjectPool GetInstance() 方法提供全局的访问点。如果实例不存在,则创建一个新的实例。
优势
- 资源管理:确保对对象池的全局唯一访问,避免了多次创建和管理多个对象池的复杂性。
- 集中控制:通过单例模式,可以集中管理和访问对象池,方便在其他类中使用。
101万+

被折叠的 条评论
为什么被折叠?



