c#单例模式的实现

单例模式定义:一个类有且仅有一个实例,并且自行实例化向整个系统提供。

  实现要点:

    1、是单例模式的类只提供私有的构造函数。

      2、是类定义中含有一个该类的静态私有对象。

    3、是该类提供了一个静态的共有的函数用于创建或获取它本身的静态私有对象。

  双重锁定实现代码(多线程内):

namespace Singleton
{
    public class Singleton
    {
        //定义一个私有的静态全局变量来保存该类的唯一实例
        private static Singleton _singleton;
        //定义一个只读静态对象
        //且这个对象是在程序运行时创建的
        private static readonly object _lockObj = new object();
        /// <summary>
        /// 构造函数必须是私有的
        /// 这样在外部便无法使用 new 来创建该类的实例
        /// </summary>
        private Singleton() { }
        /// <summary>
        /// 定义一个全局访问点
        /// 设置为静态方法
        /// 则在类的外部便无需实例化就可以调用该方法
        /// </summary>
        /// <returns></returns>
        public static Singleton GetInstance()
        {
            //这里可以保证只实例化一次
            //即在第一次调用时实例化
            //以后调用便不会再实例化
            //第一重 singleton == null
            if (_singleton == null)
            {
                lock (_lockObj)
                {
                    //第二重 singleton == null
                    if (_singleton == null)
                    {
                        _singleton = new Singleton();
                    }
                }
            }
            return _singleton;
        }
    }
}

 

posted @ 2014-08-14 23:07  Jara  阅读(196)  评论(0编辑  收藏  举报