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?