国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

基于靜態Singleton模式的使用介紹

2020-01-24 03:27:12
字體:
來源:轉載
供稿:網友

什么是靜態單例模式?

靜態單例模式(Static Singleton Pattern)是我在實踐中總結的模式,主要解決的問題是在預先知道某依賴項為單例應用時,通過靜態緩存該依賴項來提供訪問。當然,解決該問題的辦法有很多,這只是其中一個。

實現細節

復制代碼 代碼如下:

/// <summary>
  /// 靜態單例
  /// </summary>
  /// <typeparam name="TClass">單例類型</typeparam>
  public static class Singleton<TClass> where TClass : class, new()
  {
    private static readonly object _lock = new object();
    private static TClass _instance = default(TClass);

    /// <summary>
    /// 獲取單例實例
    /// </summary>
    public static TClass GetInstance()
    {
      return Instance;
    }

    /// <summary>
    /// 單例實例
    /// </summary>
    public static TClass Instance
    {
      get
      {
        if (_instance == null)
        {
          lock (_lock)
          {
            if (_instance == null)
            {
              _instance = new TClass(); // must be public constructor
            }
          }
        }

        return _instance;
      }
    }

    /// <summary>
    /// 設置單例實例
    /// </summary>
    /// <param name="instance">單例實例</param>
    public static void Set(TClass instance)
    {
      lock (_lock)
      {
        _instance = instance;
      }
    }

    /// <summary>
    /// 重置單例實例
    /// </summary>
    public static void Reset()
    {
      lock (_lock)
      {
        _instance = default(TClass);
      }
    }
  }


應用測試
復制代碼 代碼如下:

class Program
  {
    interface IInterfaceA
    {
      string GetData();
    }
    class ClassA : IInterfaceA
    {
      public string GetData()
      {
        return string.Format("This is from ClassA with hash [{0}].", this.GetHashCode());
      }
    }
    static void Main(string[] args)
    {
      string data1 = Singleton<ClassA>.GetInstance().GetData();
      Console.WriteLine(data1);
      string data2 = Singleton<ClassA>.GetInstance().GetData();
      Console.WriteLine(data2);

      Console.ReadKey();
    }
  }


測試結果

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 桦南县| 龙口市| 常熟市| 化州市| 榆林市| 浮梁县| 鹤山市| 博野县| 开鲁县| 鄱阳县| 南昌县| 呼和浩特市| 昌江| 合肥市| 防城港市| 宜州市| 肇东市| 荥经县| 叶城县| 洛隆县| 垣曲县| 财经| 龙里县| 岢岚县| 东阿县| 会东县| 甘泉县| 图们市| 合山市| 秭归县| 老河口市| 吉隆县| 永川市| 静乐县| 施秉县| 安宁市| 江川县| 基隆市| 乡城县| 霞浦县| 合山市|