Dependency Injection
Invece di creare da sé le proprie dipendenze, una classe le riceve dall'esterno.
Rende il codice testabile (le dipendenze si sostituiscono con mock nei test), poco accoppiato e flessibile. I grandi framework (Spring, Angular, ASP.NET) fondano la propria architettura su container di DI.