泛型单例
程序员文章站
2022-04-03 15:38:54
...
单例模式的含义:
单例模式下一个类只能有一个实例,可以自行实例化并且向整个系统提供这个实例。它可以通过调用公共静态方法来获得这个实例。
满足以下条件可以符合上述要求:
1.记录一个私有的唯一实例。
2.只有一个私有的构造方法(避免外部创建实例)。
3.拥有一个公共静态方法,可以取得这个唯一实例,并且在取不到时自我创建实例。
以下是最简式的单例模式实现:
public class MySingleton
{
//唯一实例
private static MySingleton _Instance = null;
//私有构造方法
private MySingleton() { }
//公共静态获取实例的方法
public static MySingleton GetInstance()
{
if (_Instance == null)
{
_Instance = new MySingleton();
}
return _Instance;
}
}
此外,还可以将单例模式改为泛型,并预留一些接口:
public class SingletonBase<T> where T : class, new()
{
private static T _Instance = null;
protected SingletonBase() { }
public static T GetInstance()
{
if (_Instance == null)
{
CreateInstance();
}
return _Instance;
}
public static void CreateInstance()
{
if (_Instance == null)
{
_Instance = Activator.CreateInstance<T>();
(_Instance as SingletonBase<T>).Init();
}
}
public static void DestroyInstance()
{
if (_Instance != null)
{
(_Instance as SingletonBase<T>).UnInit();
_Instance = null;
}
}
public virtual void Init()
{
}
public virtual void UnInit()
{
}
}
这样的话,任何类只要继承这个SingletonBase,都将是一个单例模式。