首页 > Windows开发 > 详细

C#设计模式——单例模式

时间:2020-05-17 16:21:25      阅读:48      评论:0      收藏:0      [点我收藏+]
  /*------------------Singleton  单例模式-------------------
         ①单例模式(单线程和多线程)
         ②单例模式的三种写法
         ③单例模式的优缺点
         ④深度探讨单例模式的应用场景
         需求分析:1.对象在构造的时候会耗时间或者占用资源
                  2.很多地方都需要用到这个对象
                  3.不同的地方使用一个实例和多个实例没有区别
        综上所述:对象重用,不需要重复构造
        解析:一、构造函数私有化----避免重复构造
             二、公开静态方法提供实例----这样才能提供外部访问
             三、静态变量共享----保证全局变量的唯一性
        思考:单线程与多线程的区别,考虑并发性
        解决方案:加锁,但是要考虑性能优化(因为重复加锁会影响性能),加判断
   */
#region
懒汉式 public static Singleton Instance = null; private static readonly object _padLock = new object(); public static Singleton CreateInstance() { if (Instance == null) { lock (_padLock)//保证方法块儿只有一个线程可以进入 { Console.WriteLine("进入lock排队...."); Thread.Sleep(1000); if (Instance == null) { Instance = new Singleton(); } } } return Instance; } #endregion
#region 饿汉式1
        public static SingletonSecond Instance = null;
        /// <summary>
        /// 静态构造函数:由CLR保证,在第一次使用到这个类型之前,自动被调用且只调用一次
        /// 很多初始化都可以写在这里
        /// </summary>
        static SingletonSecond()
        {
            Instance = new SingletonSecond();
        }
        public static SingletonSecond CreateInstance()
        {
            return Instance;
        }
#endregion
#region饿汉式2
   /// <summary>
       /// 静态构造函数:由CLR保证,在第一次使用到这个类型之前,会自动初始化且只会初始化一次
        private static SingletonThird Instance = new SingletonThird();
        public static SingletonThird CreateInstance()
        {
            return Instance;
        }
#endregion

 

C#设计模式——单例模式

原文:https://www.cnblogs.com/lvyp1016520/p/12905603.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!