設計模式之單例模式代碼實例分析

單例模式屬於創建型設計模式,通過單例模式可以保證系統中一個類隻有一個實例,即一個類隻有一個對象實例。使用單例模式的有很多原因,比如對象實例化需要的時間比較久,並且系統長時間,或經常使用該對象時,這種情況可以考慮使用單例模式,這樣會節約一定的時間。下面是線程安全模式的單例模式,

經典款:

public class Singlenton
    {
        private static readonly Object _lock = new object();

        private static Singlenton _instance=null;

        private Singlenton()
        {
            Thread.Sleep(5000);//模擬對象實例時需要比較長的時間
        }

        public static Singlenton CreatInstance()  
        {
            if (_instance==null)   //減少線程等待
            {
                lock (_lock)  //線程安全 --多線程同時訪問時,會在這裡排隊等待
                {
                    if (_instance==null)  //保證系統內這類隻有一個實例
                    {
                        _instance = new Singlenton();
                    }
                }
            }

            return _instance;
        }


    }

靜態構造函數實現方式:

 public class SinglentonStatic
    {
        private static SinglentonStatic _instance  = new SinglentonStatic();

        private static SinglentonStatic()
        {
            Thread.Sleep(5000);//模擬對象實例時需要比較長的時間
        }

        public static SinglentonStatic CreatInstance()
        {
            return _instance;
        }
    }

單例模式創建實例對象後,多個線程同時使用對象的屬性時,會出現線程並發的問題。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *