程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> c#單例模式的實現,

c#單例模式的實現,

編輯:C#入門知識

c#單例模式的實現,


  單例模式定義:一個類有且僅有一個實例,並且自行實例化向整個系統提供。

  實現要點:

    1、是單例模式的類只提供私有的構造函數。

      2、是類定義中含有一個該類的靜態私有對象。

    3、是該類提供了一個靜態的共有的函數用於創建或獲取它本身的靜態私有對象。

  雙重鎖定實現代碼(多線程內):

 

復制代碼
namespace Singleton
{
    public class Singleton
    {
        //定義一個私有的靜態全局變量來保存該類的唯一實例
        private static Singleton _singleton;
        //定義一個只讀靜態對象
        //且這個對象是在程序運行時創建的
        private static readonly object _lockObj = new object();
        /// <summary>
        /// 構造函數必須是私有的
        /// 這樣在外部便無法使用 new 來創建該類的實例
        /// </summary>
        private Singleton() { }
        /// <summary>
        /// 定義一個全局訪問點
        /// 設置為靜態方法
        /// 則在類的外部便無需實例化就可以調用該方法
        /// </summary>
        /// <returns></returns>
        public static Singleton GetInstance()
        {
            //這裡可以保證只實例化一次
            //即在第一次調用時實例化
            //以後調用便不會再實例化
            //第一重 singleton == null
            if (_singleton == null)
            {
                lock (_lockObj)
                {
                    //第二重 singleton == null
                    if (_singleton == null)
                    {
                        _singleton = new Singleton();
                    }
                }
            }
            return _singleton;
        }
    }
}
復制代碼

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved