最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于靜態(tài)Singleton模式的使用介紹

 更新時間:2013年04月18日 11:53:22   作者:  
本篇文章小編為大家介紹,基于靜態(tài)Singleton模式的使用介紹。需要的朋友參考下

什么是靜態(tài)單例模式?

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

實現(xiàn)細節(jié)

復制代碼 代碼如下:

/// <summary>
  /// 靜態(tài)單例
  /// </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>
    /// 設(shè)置單例實例
    /// </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);
      }
    }
  }


應(yīng)用測試
復制代碼 代碼如下:

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();
    }
  }


測試結(jié)果

相關(guān)文章

最新評論

郎溪县| 肇州县| 吉林市| 洪湖市| 芦溪县| 手机| 明星| 溧阳市| 交城县| 富宁县| 敖汉旗| 东源县| 本溪| 崇明县| 迁西县| 吉安市| 鄂伦春自治旗| 长岭县| 册亨县| 清徐县| 潞城市| 勐海县| 比如县| 阳江市| 阜南县| 姚安县| 泗水县| 凤山市| 阳东县| 武城县| 梁山县| 莱西市| 贵阳市| 都安| 双辽市| 呼伦贝尔市| 宁城县| 平江县| 桂东县| 永春县| 随州市|