最近用到了单例模式,以下是个人理解,如有不对的请各路大神指点
1.简介:单例模式严格定义一个类只有一个实例,并提供一个他的全局访问点。
2.解决问题:当一个类只是要求可以创建一个实例时,需要使用单例模式。
3.构成:由一个私有变量,一个私有构造函数和一个公共的方法构成。
4.实例:
public ?class Singleton ???{ ????/// <summary> ???/// 程序运行时,创建一个静态只读的进程辅助对象 ???/// </summary> ????private static readonly object _object=new object(); ???/// <summary> ???/// 构造方法私有,外键不能通过New类实例化此类 ???/// </summary> ???????private static Singleton instance; ???????????//私有构造方法Singleton(),外界不能使用new关键字来创建此类的实例了。 ???????private Singleton() { } ??????????/// <summary> ???/// 此方法是本类实例的唯一全局访问点 ???/// (双重加锁 Double-Check Locking) ???/// </summary> ???/// <returns></returns> ???????public static Singleton GetInstance() ???????{ ??????????//先判断实例是否存在,不存在再加锁处理 ???????????if (instance==null) ???????????{ ???????????????//在同一时刻加了锁的那部分程序只有一个线程可以进入, ???????????????lock (_object) ???????????????{ ????????????????????//如实例不存在,则New一个新实例,否则返回已有实例 ???????????????????if (instance==null) ???????????????????{ ???????????????????????instance = new Singleton(); ???????????????????} ???????????????} ????????????????????????????????????????????} ???????????return instance; ???????} ???}客户端调用: ?class Program ???{ ???????static void Main(string[] args) ???????{ ???????????var singleton1 = Singleton.GetInstance(); ???????????var singleton2 = Singleton.GetInstance(); ???????????if (singleton1==singleton2) ???????????{ ???????????????Console.WriteLine("2个实例相同"); ???????????} ???????????Console.ReadKey(); ???????} ???}
单例模式 net
原文地址:http://www.cnblogs.com/mili3/p/7675711.html