Citation:
En d'autres termes, on va, dans un premier temps, définir un jeu d'interfaces de façon à ce que nos différents modules puissent communiquer par un contrat.
C'est pour ça qu'on parle de "résolution" à propos des conteneurs IoC : résoudre une dépendance, c'est, à partir d'une interface, déterminer quel type concret instancier pour en injecter une instance ensuite. C'est une composante essentielle de l'inversion de contrôle : non seulement on ne laisse pas à l'objet final le contrôle sur l'instanciation de ses dépendances, mais on ne le laisse pas non plus connaitre le type concret de cette dépendance. Cela permet principalement de ne pas avoir à modifier le code de la classe consommatrice quand une particularité de sa dépendance change, et d'appliquer le principe de séparation des responsabilités : on abstrait les détails d'implémentation qui ne concernent pas la classe cliente.