最新国产好看的视频,伊人天堂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)緩存該依賴項來提供訪問。當(dāng)然,解決該問題的辦法有很多,這只是其中一個。

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

復(fù)制代碼 代碼如下:

/// <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)用測試
復(fù)制代碼 代碼如下:

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)文章

最新評論

荃湾区| 海口市| 澄江县| 平陆县| 拉萨市| 祁东县| 公安县| 临江市| 罗城| 黄龙县| 长沙市| 汉阴县| 南召县| 民县| 沙河市| 新安县| 湄潭县| 洪洞县| 崇左市| 交口县| 吉水县| 昌都县| 庆安县| 吉首市| 囊谦县| 阜宁县| 武汉市| 伊通| 五大连池市| 东方市| 永丰县| 庆阳市| 靖宇县| 奇台县| 长泰县| 四川省| 富民县| 清镇市| 左贡县| 大余县| 勐海县|