单件模式(Singleton Pattern):用来创建独一无二的,只有一个实例的对象的入场券
//以“MyClass”作为单件类的类名,你可以根据自己的单件进行命名
public class MyClass
{
//单件类内部的唯一实例,volatile关键词确保当uniqueInstance变量被初始化成为Singleton实例时,多个线程正确的处理uniqueInstance变量
private volatile static MyClass uniqueInstance;
//用于同步锁
private static object synchronized = new object();
//保证外部程序无法对该类进行实例化
private MyClass() { }
//通过静态方法获取该单件类,具体操作为'MyClass.getInstance()'
public static MyClass getInstance()
{
lock (synchronized){ //使用synchronized进行同步锁,进入该区域后其他线程无法进入该区域
if (uniqueInstance == null){ //检查变量uniqueInstance是否已经被实例
uniqueInstance = new Singleton();
}
}
}
return uniqueInstance;
}
}
简化的实现方式
public class MyClass
{
private MyClass() { }
private static readonly Lazy<MyClass> _instance = new Lazy<MyClass>(() => new MyClass());
public static MyClass Instance { get { return _instance.Value; } }
}
总结:
确保一个类只有一个实例,并提供一个全局访问点。
下面有一个讲的很好的单例模式,但是使用JAVA实现的,讲解参考性非常棒。
转载:
http://blog.csdn.net/likika2012/article/details/11483167 作者:likika2012