首页 > 代码库 > 单例模式(Singleton)

单例模式(Singleton)

单例模式(也叫单件模式)的作用就是保证在整个应用程序的生命周期中,任何一个时刻,单例类的实例都只存在一个(当然也可以不存在)。

单例模式的特点:

首先,单例模式使类在程序生命周期的任何时刻都只有一个实例;

 

然后,单例的构造函数是私有的,外部程序如果想要访问这个单例类的话,必须通过 GetInstance()来请求(注意是请求)得到这个单例类的实例。

 

/// <summary>    /// 懒汉式单例模式    /// Summary description for Spooler.    /// </summary>    public class Spooler    {        private static bool instance_flag= false;        private Spooler()        { instance_flag = true; }        //简单模式        public static Spooler getSpooler()        {            if (! instance_flag)                 return new Spooler ();            else                return null;        }        private static Spooler m_instanceSpooler;        private static readonly object m_objectPadLock = new object();        public static Spooler InstanceSpooler        {            get            {                //并不是线程安全的,在多线程模式下,可能产生第二个实例                //return m_instance == null ? new RectangleMethod() : m_instance;                //采用双锁定技术                if (m_instanceSpooler == null)                {                    lock (m_objectPadLock)                    {                        if (m_instanceSpooler == null)                            m_instanceSpooler = new Spooler();                    }                }                return m_instanceSpooler;            }        }    }    /// <summary>    ///饿汉式单例类    /// </summary>    public sealed class Singleton    {        private static readonly Singleton singleton = new Singleton();        private Singleton()        {        }        public static Singleton GetInstance()        {            return singleton;        }    }

 

单例模式(Singleton)