Вы должны абстрагировать параметры чтения с помощью шаблона Strategy . Создайте абстракцию с именем ConfigurationSource
, имеющую метод readConfig(key) -> value
(или возвращающий некоторый объект / структуру Configuration
) со следующими реализациями:
CommandLineConfigurationSource
EnvironmentVariableConfigurationSource
WindowsFileConfigurationSource
- загрузка из файла конфигурации из C:/Document and settings...
WindowsRegistryConfigurationSource
NetworkConfigrationSource
UnixFileConfigurationSource
- - загрузка из файла конфигурации из /home/user/...
DefaultConfigurationSource
- значения по умолчанию Вы также можете использовать Цепь ответственности для привязки источников в различных конфигурациях, таких как: если аргумент командной строки не указан, попробуйте переменную окружения, и если все остальное не выполнено, верните defauls.
Ad 1. Этот подход не только позволяет абстрагировать конфигурацию чтения, но вы можете легко изменить базовый механизм без какого-либо влияния на код клиента. Кроме того, вы можете использовать сразу несколько источников, отступать или собирать конфигурацию из разных источников.
Ad 2. Просто выберите, какая из реализаций подходит. Конечно, некоторые записи конфигурации не подходят, например, к аргументам командной строки.
Объявление 3. Если некоторые реализации не переносимы, имейте два, один молча игнорируемый / пропущенный, если он не подходит для данной системы.