单件模式是开发中非常常用的模式,每次形式又是固定的,所以想是否可以用泛型?一搜发现这个需求还是挺常见的,这里记录一下。原出处已经忘了,所以未标注
/// <summary>
/// 单件模式的管理类的泛型模版
/// </summary>
/// <typeparam name="T"></typeparam>
public abstract class BaseInstanceManager<T> where T : class, new()
{
public abstract void Reset();
private static volatile T _instance;
/// <summary>
/// 线程安全锁
/// </summary>
private static readonly object syslock = new object();
public static T GetInstance()
{
if (_instance == null)
{
lock (syslock)
{
if (_instance == null)
{
_instance = new T();
}
}
}
return _instance;
}
}
使用方法
public class NetworkTimer:BaseInstanceManager<NetworkTimer>
{
//如果没有初始化需求,这个可以不写
public NetworkTimer() { }
}
但是这个方式有个问题,就是他把new函数给暴露出来了,而普通单件模式下,初始函数是private的,也就避免了调用者错误的使用new来创建单件对象。
版权属于:CraZyMoNk
本文链接:https://blog.peacharc.com/archives/425.html
转载时须注明出处及本声明