. net设计模式 (单例模式)学习笔记

  运用设计模式只是为了解决一类问题的,当解决掉当前一类问题,通常会在解决这个问题时候 带来其他问题  合理应用扬长避短


                      

                       net设计模式   (单例模式)学习笔记

  概念: 一个类只有一个实例,即一个类只有一个对象实例。

  • 第一种类型    基础型 可扩充
    public class Singleton
    {
        private Singleton()
        {

        }
        private static Singleton singleton;
        private static object singletonLock = new object();

        public static Singleton GetSingleton()
        {
            if (singleton == null)///多线程 之后的 优化
            {
                lock (singletonLock)///多线程
                {
                    if (singleton == null)
                    {
                        singleton = new Singleton();
                    }
                }
            }
            return singleton;
        }
    }
  • 第二种类型
    public class Singleton
    {
        private Singleton()
        {

        }
        private static Singleton singleton = null;
     

        /// <summary>
        /// 静态构造函数 由CLR保证 在第一次使用这个类之前,调用而且只调用一次
        /// </summary>
        static Singleton()
        {
            singleton = new Singleton();
        }

        public static Singleton GetSingleton()
        {
            return singleton;
        }
    }
  • 第三种类型
    public class Singleton
    {
        private Singleton()
        {

        }
        /// <summary>
        /// 静态变量: 会在类初始化之前调用,而且只会调用一次
        /// </summary>
        private static Singleton singleton = new Singleton();
     
        public static Singleton GetSingleton()
        {
            return singleton;
        }
    }

猜你喜欢

转载自blog.csdn.net/nicepainkiller/article/details/83117509