На самом деле, подход 2 работает очень хорошо.
Я пытался использовать объект свойств Singleton в недавнем проекте. Затем, когда пришло время добавлять функции, мне нужно было пересмотреть синглтон, и я пожалел, что нашел все места, где я использовал MySingleton.getInstance()
.
Подход 2 для передачи глобального информационного объекта через ваши различные конструкторы легче контролировать.
Использование явного установщика также помогает.
class MyConfig extends Properties {...}
class SomeClass {
MyConfig theConfig;
public void setConfi( MyConfig c ) {
theConfig= c;
}
...
}
Это работает хорошо, и вы будете рады, что точно контролировали, какие классы действительно нуждаются в информации о конфигурации.