前言:单例模式是我们在软件开发中比较常用的模式之一,能很好的理解并运用对软件的性能是有很大的帮助的。
一、最简单的单例模式

public class Singleton
{
private static Singleton _instance = new Singleton();
private Singleton() { }
public static Singleton GetInstance() { return _instance; }
}
点评:该种实现,在程序一运行就将对象加载到内存,由于静态变量是常驻于内存不会被GC回收,故该实例化方式适用于经常使用的对象。对象一开始就被实例化了所以在多线程环境下是线程安全的。
二、双重锁单例模式

public class Singleton
{
private static object obj = new object();
private static Singleton _singletion;
private Singleton()
{ }
public static Singleton Instance
{
get
{
if (_singletion == null)
{
lock (obj)
{
if (_singletion == null)
{
_singletion = new Singleton();
}
}
}
return _singletion;
}
}
}
点评:双重锁,保证了在多线程环境下对字典或集合的操作是安全的,使用于缓存的读取。
