单件模式 Singleton
单件模式:确保一个类只有一个实例,并提供一个全局访问点。
//包含单件实例的类Singleton
public class Singleton
{
//声明用于存储单件实例的变量instance
private static Singleton instance;
//定义用于标识同步线程的对象locker
private static Object locker = new Object();
//私有的构造函数Singleton
private Singleton() { }
//公共访问的返回单件实例的函数GetInstance
public static Singleton GetInstance()
{
//第一重“锁”只为了提高些性能
if (instance == null)
{
//线程锁定块
lock (locker)
{
//第二重“锁”防止多线程多次new实例
if (instance == null)
{
//new唯一实例
instance = new Singleton();
}
}
}
//返回单件实例
return instance;
}
}
//程序调用入口(Main方法)
class Program
{
static void Main(string[] args)
{
Singleton s1 = Singleton.GetInstance();
Singleton s2 = Singleton.GetInstance();
if (s1 == s2) //True
{
Console.WriteLine("Objects are the same instance!");
}
Console.ReadKey();
}
}
当我们的系统中某个对象只需要一个实例的情况,例如:操作系统中只能有一个任务管理器,操作文件时,同一时间内只允许一个实例对其操作等时可以用此模式。