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

C#單例模式

turn isp -s 使用 == 中比 sta 適用於 PE

前言:單例模式是我們在軟件開發中比較常用的模式之一,能很好的理解並運用對軟件的性能是有很大的幫助的。

一、最簡單的單例模式

技術分享圖片
public class Singleton

{

          private static Singleton _instance = new Singleton();

          private Singleton() { }

          public static Singleton GetInstance() { return _instance; }

}
View Code

點評:該種實現,在程序一運行就將對象加載到內存,由於靜態變量是常駐於內存不會被GC回收,故該實例化方式適用於經常使用的對象。對象一開始就被實例化了所以在多線程環境下是線程安全的。

二、雙重鎖單例模式

技術分享圖片
    public class Singleton
    {
        private static object obj = new object();
        private static Singleton _singletion;
        private Singleton()
        { }

        public static Singleton Instance
        {
            get
            {
                
if (_singletion == null) { lock (obj) { if (_singletion == null) { _singletion = new Singleton(); } } }
return _singletion; } } }
View Code

點評:雙重鎖,保證了在多線程環境下對字典或集合的操作是安全的,使用於緩存的讀取。

C#單例模式