首页 > 代码库 > 1、Singleton 单件(创建模式)

1、Singleton 单件(创建模式)

一、Singleton模式主要应用在一些特殊的类,在整个系统运行中,有且仅有一个实例的场景

二、Singleton模式分为单线程与多线程情况,当然多线程一样适应单线程

  单线程:在这种情况下比较容易,因为你的程序你能保证在单线程下运行,所以不要考虑那么多情况

  

    public class Singleton    {        private static Singleton instance;        /// <summary>        /// 拒绝类外的成员创建实例        /// </summary>        private Singleton()        { }        /// <summary>        /// 用属性公开实例对象        /// </summary>        public static Singleton Instance        {            get            {                if (instance == null)                {                    instance = new Singleton();                }                return instance;            }        }    }

   多线程:因为在多线程环境时,在判断instance为null与创建实例之类,有可能存在多个线程同时进入判断,从而创建多个不同的实例,为了防止这种情况,

在判断instance为空时,增加双判断

    public class Singleton    {        private static volatile Singleton instance;        private static object lockHelper = new object();        /// <summary>        /// 拒绝类外的成员创建实例        /// </summary>        private Singleton()        { }        /// <summary>        /// 用属性公开实例对象        /// </summary>        public static Singleton Instance        {            get            {                if (instance == null)                {                    lock (lockHelper)                    {                        if (instance == null)                        {                            instance = new Singleton();                        }                    }                                    }                return instance;            }        }    }

 一个比较简单的实现:

 

   public class Singleton    {        public static readonly Singleton instance = new Singleton();        private Singleton()        { }    }