Sono nuovo all'iniezione di dipendenza e anche se mi è davvero piaciuto fino ad ora, non sono sicuro di dove dovrebbero andare i binding. Sto usando Guice in Java, quindi alcune delle cose che dico potrebbero essere specifiche solo per Guice. Come vedo, ci sono due opzioni:
Accompagna la / e classe / e di cui è necessario. Quindi, scrivi solo install(OtherClassModule.class)
in qualunque altro modulo desideri essere in grado di usare detta classe. A mio avviso, il vantaggio è che le classi che vogliono usarlo (o gestire le classi che vogliono usarlo) non hanno bisogno di conoscere i dettagli dell'implementazione. Il problema che vedo è che cosa succede se due classi vogliono utilizzare due diverse versioni della stessa classe? C'è molta personalizzazione possibile a causa di DI e questo sembra limitare molto.
Implementato nel modulo della / e classe / e di cui è necessario. È il capovolgimento di ciò che ho detto sopra. Ora hai la personalizzazione, ma non l'incapsulamento.
C'è una terza opzione? Sto fraintendendo qualcosa di ovvio? Qual è la migliore pratica?