单例模式实现的四种方式
1.通过静态对象实现
public class Singleton
{
//私有化构造函数,阻止类外部的任何代码创建实例
private Singleton()
{
}
//静态变量:会在类型第一次使用时候初始化,而且只初始化一次
private static Singleton _Singleton = new Singleton();
//创建一个方法 实例化Singleton
public static Singleton CreateInstance()
{
return _Singleton;
}
}
2.通过静态构造函数
public class Singleton
{
//私有化构造函数,阻止类外部的任何代码创建实例
private Singleton()
{
}
//私有静态变量
private static Singleton _Singleton = null;
//静态构造函数:由CLR保证,在第一次使用这个类之前调用而且只调用一次
static Singleton()
{
_Singleton = new Singleton();
}
//创建一个方法 实例化Singleton
public static Singleton CreateInstance()
{
return _Singleton;
}
}
3.多线程模式
public class Singleton
{
//私有化构造函数,阻止类外部的任何代码创建实例
private Singleton()
{
}
//定义私有静态变量
private static Singleton _Singleton = null;
//对象锁
private static object Singleton_Lock = new object();
//创建一个方法 实例化Singleton
public static Singleton CreateInstance()
{
//保证对象初始化之后的所有线程,不需要等待锁
if (_Singleton == null)
{
//上锁,保证只有一个线程进去判断
lock (Singleton_Lock)
{
//保证单例模式,对象为空才创建
if (_Singleton == null)
{
_Singleton = new Singleton();
}
}
}
return _Singleton;
}
}
4.单线程模式
public class Singleton
{
//私有化构造函数,阻止类外部的任何代码创建实例
private Singleton()
{
}
//定义一个静态Singleton对象
private static Singleton _Singleton = null;
//创建一个方法 实例化Singleton
public static Singleton CreateInstance()
{
//保证对象为空才创建
if (_Singleton == null)
{
_Singleton = new Singleton();
}
return _Singleton;
}
}