前言
设计模式是众多的开发者在长期的开发过程中所总结出的针对一些一般性问题的最佳解决方案
而单例模式则是其中最为简单同时也是最为常用的几种之一,它所针对的问题是复用的全局对象的频繁创建与销毁浪费系统资源。因此,它适用于你想要合理的控制实例化数目节省系统资源的情况,它具有以下特点:
1、单例类只允许创建一个实例;
2、单例类的实例由自己来进行创建而非通过外界;
3、单例类必须向外界对象提供这一实例
以上参考自菜鸟教程:单例模式
实现方法
Unity中的单例模式大致可分为这两类:
继承MonoBehaviour类和不继承MonoBehaviour类。
继承MonoBehaviour类的实现方式
MonoBehaviour的子类实现单例模式的方式很简单,只需要创建一个静态的实例然后加上 该实例 = this 就可以了,代码如下:
public class Singleton : MonoBehaviour
{
public static Singleton instance; //创建静态实例
//防止外部进行额外的实例化将构造函数设为private
private Singleton()
{
}
void Awake()
{
instance = this;
}
}
构造函数的私有化可以防止外界进行额外的实例化:
不继承MonoBehaviour类的实现方式
不继承MonoBehaviour类的实现方式稍微复杂一些,同时也有适用于很多种不同情形的实现方式,如:饿汉式、懒汉式、静态内部类、线程安全懒汉式、双检锁等……
这里就只谈谈上边例举的前三种实现方式。
懒汉式
懒汉式最大的特点是只有在第一次时才进行初始化