1.单例模式定义
通过单例模式的方法创建的类在当前进程中只有一个实例(例如unity场景中的GameManager只允许被实例化一次)
2.单例模式的基类
public class SingeCaseBase<T> where T : new()
{
private static T instance;
public static T GetInstance()
{
if (instance == null)
{
instance = new T();
}
return instance;
}
}
任何类继承自SingleCaseManage通过调用GetInstance只能实例化一次,例如:
class MusicManager : SingeCaseBase<MusicManager>
{
public MusicManager()
{
}
public int a;
}
class Program
{
static void Main(string[] args)
{
MusicManager musicManager1 = MusicManager.GetInstance();
musicManager1.a = 1;
Console.WriteLine(musicManager1.a);
MusicManager musicManager2 = MusicManager.GetInstance();
musicManager2.a = 2;
Console.WriteLine(musicManager1.a);
Console.ReadKey();
}
}
得结果:
此处第二次输出的是musicManager1 的a的值,为2
其实是musicManager1 和musicManager2都指向了同一个对象,保证了该类只有一个实例