国产探花免费观看_亚洲丰满少妇自慰呻吟_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();
    }
  }


測試結果

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 绍兴县| 特克斯县| 台南县| 五河县| 永定县| 西和县| 禹州市| 东乡族自治县| 郧西县| 北辰区| 潜山县| 扶风县| 沙湾县| 阳原县| 宁德市| 鄯善县| 永康市| 静宁县| 越西县| 兴义市| 沈阳市| 师宗县| 郎溪县| 海伦市| 自治县| 肇州县| 三亚市| 崇信县| 华安县| 南溪县| 西吉县| 榆中县| 拜城县| 息烽县| 平邑县| 手游| 时尚| 安溪县| 陆良县| 若尔盖县| 舟曲县|