单例模式

来源:互联网 发布:plsql导入sql脚本乱码 编辑:程序博客网 时间:2024/04/27 14:22

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.由第一条所示,单例模式使对象保持相当长的一段时间,而且要手动销毁,所以小心内存泄露