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

配置包裝器模式:依賴注入實現可測試的配置訪問

     編輯:關於C++

背景動機

在 .NET 應用中,直接使用 `ConfigurationManager` 讀取配置文件會造成強耦合,難以進行單元測試。通過包裝器模式配合依賴注入,可實現配置訪問的解耦與可測試性。

核心接口設計

public interface IConfigurationReader {
    string GetAppSettings(string key);
    string GetConnectionString(string key);
}

具體實現

public class ConfigurationReader : IConfigurationReader {
    public string GetAppSettings(string key) {
        return ConfigurationManager.AppSettings[key];
    }
    public string GetConnectionString(string key) {
        return ConfigurationManager.ConnectionStrings[key].ConnectionString;
    }
}

依賴注入註冊(Unity Container)

IUnityContainer container = new UnityContainer();
container.RegisterType();

使用示例

var reader = container.Resolve();
var value = reader.GetAppSettings("hello");
Console.WriteLine(value);

進階:集中管理配置鍵

將所有配置鍵定義在靜態類中,避免魔術字符串分散:

public static class ConfigKeys {
    public const string DbConnection = "DbConnection";
    public const string ApiEndpoint = "ApiEndpoint";
    // ...
}

優勢總結

  • 可測試性:測試時可注入 Mock 實現,不依賴實際 config 文件
  • 單一職責:配置讀取邏輯集中封裝,業務代碼只依賴抽象
  • 擴展性:輕鬆切換配置源(如 Azure Key Vault、環境變量)
  • 維護性:配置鍵集中管理,重構時不易出錯

適用場景

所有需要讀取配置的 .NET 應用,特別是追求高測試覆蓋率、採用分層架構或微服務架構的項目。

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