我所理解的单例模式:整个程序中只容许有惟一的一个对象(这个类只能实例化一次)设计模式
看看我找到的解释:当一个类只能有一个对象时,每每会用到单例模式,例如,现实生活中有不少临界资源,像 打印机、处理器(单核)、皇帝、太子等等,它们都是稀有资源,只能有一个实例对象。安全
第一种最简单,但没有考虑线程安全,在多线程时可能会出问题。(懒单例)多线程
public class Singleton { private static Singleton _instance = null; //1.声明一个私有方法(外部没法调用) private Singleton(){} //2.声明一个公共的静态的建立上面私有方法(实现外部能够调用到声明的私有的单例方法) public static Singleton CreateInstance() { //若是已经存在这个对象了就不要再建立新的,直接返回该对象 //若是这个对象不存在就new一个新的呗 if(_instance == null) { _instance = new Singleton(); } return _instance; } }
第二种考虑了线程安全spa
public class Singleton { private volatile static Singleton _instance = null; private static readonly object lockHelper = new object(); private Singleton(){} public static Singleton CreateInstance() { if(_instance == null) { lock(lockHelper) { if(_instance == null) _instance = new Singleton(); } } return _instance; } }
class MyClass { private static MyClass my = new MyClass(); private MyClass() { } public static MyClass GetMyClass() { return my; } }
第三种多是C#这样的高级语言特有的线程
public class Singleton { private Singleton(){} public static readonly Singleton instance = new Singleton(); }
实现方式没有仔细研究,先记个懒单例吧。抽空看看大话设计模式。。。设计
好吧,例子已经在上面了。。。code