PRINCIPLES
D - Dependency Inversion Principle
Dipendi da astrazioni, non da implementazioni concrete. I moduli di alto livello non devono dipendere da quelli di basso livello.
Esempi di Codice
PROBLEMA: Violazione DIP
UserService dipende da MySQL direttamente. Impossibile testare o cambiare DB.
JAVASCRIPT
Loading...
SOLUZIONE: Dependency Inversion (DIP)
UserService dipende da astrazione. Database iniettato. Testabile e flessibile.
JAVASCRIPT
Loading...
Esempi nel Mondo Reale
Dependency Injection (Spring, Angular, NestJS)
Repository pattern (interfaccia, impl varie)
Logger interfaces (Winston, Bunyan intercambiabili)
Payment gateways (interfaccia comune, provider diversi)
Quando Usarlo
Sempre per dipendenze esterne (DB, API, file)
Per testing isolato (mock dependencies)
Quando vuoi sostituire implementazioni
Quando NON Usarlo
Dipendenze da librerie standard stabili (Math, Date)
Pattern Correlati