1、懒汉式单例模式:
在用到单例对象的时候才会创建单例对象。
public class Singletion<T> where T : class,new()
{
private static T _Instance;
protected static readonly object Lockobj = new object();
public static T Instance
{
get
{
if (_Instance == null)
{
lock (Lockobj)
{
if (_Instance == null)
_Instance = new T();
//使用反射创建也可以
// _Instance = Activator.CreateInstance<T>();
}
}
return _Instance;
}
}
}
2、饿汉式单例模式:
在程序一开始的时候就创建了单例对象。但这样一来,这些对象就会在程序一开始时就存在于内存之中,占据着一定的内存。
public class Singleton<T> where T : class, new()
{
// 饿汉式单例,在类加载时直接创建实例
private static readonly T _Instance = new T();
public static T Instance
{
get
{
return _Instance;
}
}
// 私有构造函数防止外部实例化
protected Singleton() {}
}