1. 程式人生 > >C# 單例模式

C# 單例模式

public object 單例模式 () style private 才會 一次 第一次

1.懶漢模式(延時加載,他是在需要的時候才創建對象) 

 1 public class Singleton
 2 {
 3         private static Singleton _Singleton = null;
 4         private static object Singleton_Lock = new object();
 5         public static Singleton CreateInstance()
 6         {
 7             //Singleton _Singleton = null;
 8             if
(_Singleton == null)//對象初始化之後,不要再等待鎖了 9 { 10 lock (Singleton_Lock)//保證lock的方法體同一時刻只有一個線程可以進入 11 { 12 if (_Singleton == null)//是保證第一次初始化之後,不再重復的初始化 13 { 14 _Singleton = new Singleton(); 15 }
16 } 17 } 18 return _Singleton; 19 } 20 }

2.餓漢模式

1  public class Singleton
2     {
3         private static Singleton _Singleton = new Singleton();//加載類即實例化
4 
5         public static Singleton CreateInstance()
6         {
7             return _Singleton;
8 } 9 }
public class Singleton
{
        private static Singleton _Singleton = null;
        static Singleton()//類加載執行靜態構造函數
        {
            _Singleton = new Singleton();
        }

        public static Singleton CreateInstance()
        {
            return _Singleton;
        }
}

懶漢和餓漢的本質區別,就是實例化對象的時機,餓漢即類加載就會實例化對象,懶漢則是使用時才會實例化

C# 單例模式