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

C# 2.0 泛型實現單例模式重用 (1):從傳統單例到 SingletonProvider 泛型抽象

     編輯:關於C語言

傳統單例 (巢狀類別寫法)

public sealed class Singleton
{
    Singleton() { }
    public static Singleton Instance => SingletonCreator.instance;
    class SingletonCreator
    {
        static SingletonCreator() { }
        internal static readonly Singleton instance = new Singleton();
    }
}

泛型化重構

將具體型別 Singleton 替換為型別參數 T,並加上 where T : new() 約束:

public class SingletonProvider where T : new()
{
    SingletonProvider() { }
    public static T Instance => SingletonCreator.instance;
    class SingletonCreator
    {
        static SingletonCreator() { }
        internal static readonly T instance = new T();
    }
}

設計優勢

  • 一次撰寫,處處重用:任何符合 new() 約束的類別皆可透過 SingletonProvider<T>.Instance 取得單例。
  • 分離關注點:單例骨架與業務類別解耦,保持類別可單例也可非單例使用的彈性。
  • 靜態建構子保證:SingletonCreator 靜態建構子由 CLR 保證執行緒安全、延遲初始化。

此模式展示泛型如何消除樣板程式碼,提升可維護性。

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