Используйте класс SettingsManager или что-то подобное, что используется для абстрагирования получения всех данных настроек.В каждой точке кода, где вам нужен параметр, вы запрашиваете класс SettingsManager - что-то вроде:
int timeout = SettingsManager.GetSetting("TimeoutSetting");
Затем вы делегируете всю логику для того, как настройки выбираются для этого единственного класса менеджера, чья реализацияможно изменить / оптимизировать по мере необходимости.Например, вы могли бы реализовать SettingsManager для извлечения настроек из файла конфигурации, базы данных или другого хранилища данных, периодически обновлять настройки, обрабатывать кеширование дорогостоящих настроек и т. Д. Код, использующий настройки, остается блаженнымне зная обо всех этих решениях по реализации.
Для максимальной гибкости вы можете использовать интерфейс вместо фактического класса, и у вас есть различные менеджеры настроек, реализующие интерфейс: вы можете менять их местами по мере необходимости в некоторой центральной точкебез необходимости изменения базового кода.
В .NET имеется довольно богатый набор существующих классов имен (в System.Configuration) пространства имен, которые предоставляют подобные вещи, и он работает довольно хорошо.
Я не уверен в эквиваленте Java, но это хороший шаблон.