C#设计模式之单例模式实例讲解

2019-12-26 12:14:14丽君

 

复制代码
/// <summary>
    /// 单例模式
    /// </summary>
    public class Singleton
    {
        // 定义一个静态变量来保存类的实例
        private static Singleton mySingleton;

 

        // 定义一个标识确保线程同步
        private static readonly object locker = new object();


        // 定义私有构造函数,使外界不能创建该类实例
        private Singleton()
        {
        }

        //定义公有方法提供一个全局访问点。
        public static Singleton GetInstance()
        {
            //这里的lock其实使用的原理可以用一个词语来概括“互斥”这个概念也是操作系统的精髓
            //其实就是当一个进程进来访问的时候,其他进程便先挂起状态
            if (mySingleton == null)//区别就在这里
            {
                lock (locker)
                {
                    // 如果类的实例不存在则创建,否则直接返回
                    if (mySingleton == null)
                    {
                        mySingleton = new Singleton();
                    }
                }
            }