C#设计模式-单例模式

tech2022-10-15  106

1、单例模式的介绍 “单例”即为一个类只有一个实例,所以单例模式的作用就确保一个类只有一个实例的实现方式 public class Single     {         //定义一个静态变量来保存类的实例         static Single _single;

        //定义私有构造函数,使外界无法实例化该类,如果不声明该构造函数,编译器会默认声明一个public的无参构造函数         private Single()         {                   }

        //定义一个公共属性,通过属性来访问该类         //第一种  单线程没问题,多线程访问,就会创建多个实例         public static Single GetInstance         {             get             {                 if (_single == null)                 {                     _single = new Single();                 }                 return _single;             }         }

        static readonly object _padlock = new object();

        //第二种,多线程访问时,会多次对_padlock进行加锁,造成资源浪费         public static Single GetInstance         {              get             {                 lock(_padlock)                 {                     if(_single == null)                     {                         _single = new Single();                     }                     return _single;                 }             }         }

        //第三种,双重加锁,从效率及合规上最合理的声明方式         public static Single GetInstance         {             get              {                 if (_single == null)                 {                     lock (_padlock)                     {                         if (_single == null)                         {                             _single = new Single();                         }                     }                 }                 return _single;             }         } }

最新回复(0)