2026-04-22 09:52:55 +08:00
|
|
|
using System;
|
|
|
|
|
|
2026-04-27 11:20:13 +08:00
|
|
|
namespace RedHotRoast
|
2026-04-22 09:52:55 +08:00
|
|
|
{
|
|
|
|
|
public class Singleton<T> : ISingleton, IDisposable where T : Singleton<T>, new()
|
|
|
|
|
{
|
|
|
|
|
private static T mInstance;
|
|
|
|
|
|
|
|
|
|
private static readonly object LockObject = new();
|
|
|
|
|
|
|
|
|
|
public static T Instance
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
lock (LockObject)
|
|
|
|
|
{
|
|
|
|
|
mInstance ??= new T();
|
|
|
|
|
mInstance.OnSingletonInit();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return mInstance;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public virtual void Dispose()
|
|
|
|
|
{
|
|
|
|
|
mInstance = null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void OnSingletonInit()
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|