单例模式
内容来源:大话设计模式
1、单例模式(Singleton),保证一个类仅有一个实例,并提供一个访问它的全局访问点。
2、单例模式因为Singleton类封装了它的唯一实例,这样它可以严格地控制客户怎样访问它以及如何访问它。简单地说就是对唯一实例的受控访问。
3、双重锁定:不让线程每次都加锁,而是在实例未被创建的时候再加锁处理。同时也能保证多线程的安全。
class Singleton
{
private static Singleton instance;
private static readonly object syncRoot = new object();
private Singletom(){}
public static Singleton GetInstance()
{
if(instance == null)
{
lock(syncRoot)
{
if(instance == null)
{
instance = new Singleton();
}
}
}
}
}
4、 饿汉式单例类:静态初始化的方式是在自己被加载时就将自己实例化(提前占用系统资源)
懒汉式单例类:要在自己第一次被引用时,才会将自己实例化(面临多线程的安全性问题,需要双重锁定才能保证其安全)
饿汉式单例类:
public sealed class Singleton //阻止发生派生,而派生可能会增加实例
{
private static readonly Singleton instant = new Singleton; //在第一次引用类的任何成员时创建实例。公共语言运行库负责处理初始化。
private Singletonn(){}
public Singleton GetInstance()
{
return instance;
}
}