我喜欢使用服务定位器模式来模拟我的配置访问。这给了我一个点来获取我需要的任何配置值,并将其放在应用程序之外的单独库中,它允许重用和可测试性。这是一些示例代码,我不确定您使用的是什么语言,但我是用 C# 编写的。
首先,我创建一个通用类来模拟我的 ConfigurationItem。
public class ConfigurationItem<T>
{
private T item;
public ConfigurationItem(T item)
{
this.item = item;
}
public T GetValue()
{
return item;
}
}
然后,我创建了一个公开配置项的公共静态只读变量的类。在这里,我只是从配置文件中读取 ConnectionStringSettings,这只是 xml。当然,对于更多项目,您可以从任何来源读取值。
public class ConfigurationItems
{
public static ConfigurationItem<ConnectionStringSettings> ConnectionSettings = new ConfigurationItem<ConnectionStringSettings>(RetrieveConnectionString());
private static ConnectionStringSettings RetrieveConnectionString()
{
// In .Net, we store our connection string in the application/web config file.
// We can access those values through the ConfigurationManager class.
return ConfigurationManager.ConnectionStrings[ConfigurationManager.AppSettings["ConnectionKey"]];
}
}
然后,当我需要使用 ConfigurationItem 时,我会这样称呼它:
ConfigurationItems.ConnectionSettings.GetValue();
它会返回一个类型安全的值,然后我可以缓存或做任何我想做的事情。
这是一个示例测试:
[TestFixture]
public class ConfigurationItemsTest
{
[Test]
public void ShouldBeAbleToAccessConnectionStringSettings()
{
ConnectionStringSettings item = ConfigurationItems.ConnectionSettings.GetValue();
Assert.IsNotNull(item);
}
}
希望这可以帮助。