首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

C# 2.0 泛型實作單例模式

     編輯:關於C#

利用 C# 2.0 泛型將單例模式通用化,避免為每個類別重寫單例邏輯。

public class Singleton where T : new()
{
    private static T _instance;
    public static T Instance
    {
        get
        {
            if (_instance == null)
                _instance = Activator.CreateInstance(); // 需 T 有 public 無參數建構子
            return _instance;
        }
    }
}

// 使用範例
public class Foo { private int count = 0; public int Count { get { count++; return count; } } }

class Program
{
    static void Main()
    {
        Console.WriteLine(Singleton.Instance.Count); // 1
        Console.WriteLine(Singleton.Instance.Count); // 2
        Console.WriteLine(Singleton.Instance.Count); // 3 遞增證明為同一實例
        Console.ReadLine();
    }
}

Activator.CreateInstance() 要求 T 擁有公用無參數建構子。泛型單例類別本身也是線程不安全的簡易版本,生產環境建議加雙重檢查鎖定或 Lazy。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved