Мне нравится моделировать мой доступ к конфигурации из шаблона Service Locator. Это дает мне возможность получить любое значение конфигурации, которое мне нужно, и, поместив его вне приложения в отдельную библиотеку, позволяет повторно использовать и тестировать. Вот пример кода, я не уверен, какой язык вы используете, но я написал его на 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);
}
}
Надеюсь, это поможет.