1、单例模式类Singleton |
public class 类名 { private static 类名instance;
/// <summary> /// 程序运行时,创建一个静态只读的进程辅助对象 /// </summary> private static readonly object _object = new object();
/// <summary> /// 构造方法私有,外键不能通过New类实例化此类 /// </summary> private 类名() { } /// <summary> /// 此方法是本类实例的唯一全局访问点 /// (双重加锁 Double-Check Locking) /// </summary> /// <returns></returns> public static 类名 GetInstance() { //先判断实例是否存在,不存在再加锁处理 if (instance == null) { //在同一时刻加了锁的那部分程序只有一个线程可以进入, lock (_object) { //如实例不存在,则New一个新实例,否则返回已有实例 if (instance == null) { instance = new 类名(); } } } return instance; } } |
注意:1使用单例模式就不能调用dispose,尤其注意隐示销毁,使垃圾回收失效,否则再次使用对象时会出现"无法访问已释放的对象"的异常;
2.由第一条所示,单例模式使对象保持相当长的一段时间,而且要手动销毁,所以小心内存泄露