Sommaire, vulgarisé, inexact mais simple et concis, voici une ébauche d'explication sur l'injection de dépendances, concept utilisée notamment dans les architectures Java EE.
Lorsqu'un composant (exemple: un système de cache) peut être implémenté par différents mécanismes (exemple: base de données ou système de fichier), il est utile de séparer l'interface de l'implémentation en deux classes.
L'application qui utilise l'interface peut instancier l'implémentation désirée, explicitement dans le code de l'application.
Au contraire, l'injection de dépendance est un mécanisme permettant de spécifier l'implémentation en dehors du code de l'application, afin de rendre cette dernière plus souple et réutilisable.
La classe n’est pas responsable dans l’instanciation des autres classes dont elle a besoin. Les objets sont "injectés" au moment de la construction ou de l’initialisation de l’objet qui les utilise (en respectant le scope de la classe).