Ho un'app Java con tre classi: Foo , Bar e Baz . Tutti e tre dipendono da una serie di costanti attualmente definite in ogni classe al fine di determinare come eseguire. Inoltre, Baz interagisce con un numero di classi builder che devono essere configurate in vari modi.
Mi piacerebbe refactoring tutte le informazioni di configurazione in un file .properties in modo che non debba ricompilare ogni volta che cambio una costante.
Ma non sono sicuro di come strutturarlo:
Ho un ConfigInfoSingleton che contiene tutti i parametri dell'applicazione in proprietà statiche e che altre classi chiedono informazioni quando ne hanno bisogno? Sembra sbagliato, poiché introduce lo stato globale.
Consegno un ConfigInfoMap come parametro a tutte le classi che richiedono tali informazioni? Quindi ho bisogno di avere Foo , Bar e Baz che analizzano le stringhe per decidere cosa faranno e questo sembra molto sbagliato. Soprattutto nel caso di Baz , in cui non posso passare solo i valori, ma ho bisogno di utilizzare le istruzioni di switch sulle informazioni di configurazione per determinare le chiamate al metodo del builder.
Analizzo le informazioni in una classe diversa e chiedo a quella classe di dire agli altri come impostarsi? Poi ho una classe che deve conoscere i dettagli di implementazione di tutti gli altri, che sembra sbagliato, ma meno delle altre opzioni.
Questa sembra una domanda molto semplice, ma non sono sicuro di come procedere in termini di buona progettazione del software, e non ho avuto molta fortuna su Google. Qual è la cosa "giusta" da fare?