Quindi ho la mia applicazione composta da un numero di moduli in una gerarchia di moduli. Inoltre assumiamo che ogni modulo sia una classe e abbiamo un albero di classi in cui le classi in alto usano le classi sottostanti, per renderlo più semplice.
Un class A1
in fondo può dipendere da alcuni parametri di input. class B1
è sopra class A1
e sta creando e utilizzando istanze di class A1
. Pertanto deve passare le dipendenze necessarie dalle istanze di class A1
in esse. Se non è in grado di creare queste dipendenze da alcune operazioni, class B1
ora ha le dipendenze ma anche le dipendenze di class A1
.
Più andiamo avanti e più queste dipendenze si sommeranno in modo che il 100% co_de sarà necessario conoscere tutte le dipendenze a meno che non possano essere create ad un livello inferiore.
Questo significa che se class
il mio programma dipende dall'attuale class A1
, devo passare questo al% di primo livellotemperature
che poi lo passa al prossimo class
e così via fino a che non arriva proprio al parte inferiore in class
. Se lo faccio, rendo esplicito lo stato ma significa anche che ho metodi o classi che prendono molti parametri.
Variabili
Che cosa succede se il class A1
può cambiare mentre l'applicazione è in esecuzione? C'è un modo per evitare di passare tutto l'albero delle classi senza dare uno stato esplicito? Come gestireste questo ragazzi?
Costanti
Cosa succede se temperature
è una costante che non cambierà mai mentre il programma è in esecuzione? Questo ci dà più opzioni per evitare di passarlo sempre come argomento? Potrei vedere qualcuno che usa una configurazione globale (singleton) ma renderà più difficile testare correttamente?
Potrei anche passare non il temperature
stesso ma un oggetto di configurazione. Ciò significherebbe temperature
non riceve ad esempio un class B1
e un temperature
parametro ma ottiene un oggetto di configurazione lo passa a airpressure
e class B1
dove class B2
ha solo bisogno del class B1
e airpressure
ha solo bisogno del class B2
. E 'un buon approccio? Quali sono i pro / contro?