设计模式-单例模式
单例模式是为了保证系统中只有一个实例
1.私有构造函数
2. 声明静态单例对象
3. 构造单例对象之前要加锁
4. 需要两次检测单例实例是否已经构造出,分别在锁前和锁后(可能延迟加载或者缓存原因造成构造多个实例)
public class Singleton { private Singleton() {} //关键点0:构造函数是私有的 private static Singleton single = null; //关键点1:声明单例对象是静态的 private static object obj= new object(); public static Singleton GetInstance() //通过静态方法来构造对象 { if (single == null) //关键点2:判断单例对象是否已经被构造 { lock(obj) //关键点3:加线程锁 { if(single == null) //关键点4:二次判断单例是否已经被构造 { single = new Singleton(); } } } return single; } }