L'iniezione di dipendenza (DI) è un modello ben noto e alla moda. La maggior parte degli ingegneri conosce i suoi vantaggi, come:
- Rendere possibile l'isolamento in test di unità / facile
- Definizione esplicita delle dipendenze di una classe
- Facilitare il buon design ( principio di responsabilità singola (SRP) per esempio)
- Abilitare le implementazioni di commutazione rapidamente (
DbLogger
invece diConsoleLogger
per esempio)
Ritengo che vi sia un ampio consenso a livello di settore sul fatto che DI sia un modello valido e utile. Non ci sono troppe critiche al momento. Gli svantaggi menzionati nella comunità sono in genere minori. Alcuni di loro:
- Aumento del numero di classi
- Creazione di interfacce non necessarie
Attualmente discutiamo del design dell'architettura con il mio collega. È piuttosto conservatore, ma di mentalità aperta. Gli piace mettere in discussione le cose, che considero buone, perché molte persone nell'IT copiano solo la tendenza più recente, ripetono i vantaggi e in generale non pensano troppo - non analizzano troppo in profondità.
Le cose che vorrei chiedere sono:
- Dovremmo usare l'integrazione delle dipendenze quando abbiamo una sola implementazione?
- Dovremmo vietare la creazione di nuovi oggetti ad eccezione di quelli linguaggio / framework?
- Sta iniettando una sola cattiva idea di implementazione (diciamo che abbiamo solo un'implementazione, quindi non vogliamo creare un'interfaccia "vuota") se non pianifichiamo di testare una classe in particolare?