Remarque: cela a été complètement réécrit à partir de mon exemple précédent
Pensez aux prises de courant. Dans un pays donné, la politique de haut niveau est que les prises de courant sont toujours les mêmes. Peu importe d'où vous vous approvisionnez en électricité (charbon, gaz, nucléaire), les prises sur le mur doivent toujours fournir la même quantité d'énergie, via le même ensemble de connecteurs.
Vous pouvez maintenant brancher n'importe quel appareil sur cette prise, car ils ont tous une interface commune, la "prise". La politique de haut niveau n'a jamais à dicter une partie de ce détail de mise en œuvre. Branchez simplement quelque chose et c'est parti.
Maintenant, si vous avez un appareil qui ne veut pas d'alimentation CA - peut-être qu'il fonctionne sur un circuit 7 V CC - vous pouvez toujours utiliser cette politique de haut niveau, vous avez juste besoin d'une sorte d'adaptateur entre l'alimentation et l'appareil. Et, comme tout le monde a la même politique de haut niveau, le fabricant peut l'intégrer dans l'implémentation, sans aucune modification de la politique de haut niveau. La personne qui connecte l'implémentation à la stratégie (vous, brancher votre ordinateur portable) n'a pas vraiment besoin de comprendre non plus.
De plus, si le fabricant souhaite vendre le même appareil dans un autre pays, il lui suffit de développer un adaptateur différent. Ainsi, la même implémentation peut fonctionner avec plusieurs stratégies tandis que la même stratégie peut exécuter plusieurs implémentations.
Ceci est un parfait exemple d'inversion de dépendance.
Mais voici la partie intéressante: revenez à ce que j'ai dit en premier. "Peu importe d'où vous vous approvisionnez en électricité." Il s'agit également d'un détail d'implémentation. La politique de haut niveau est toujours que toutes les prises de courant ont la même forme et émettent le même type d'alimentation. Les détails de mise en œuvre de bas niveau sont à la fois d'où vient l'électricité et ce qu'elle fonctionne.
En termes de programmation, cela signifie que la politique de haut niveau est l'interface (lorsqu'un langage le prend en charge. Une autre forme de DI est le typage de canard.) Qu'une API fournit et que l'application consomme, et les détails d'implémentation de bas niveau sont à la fois les l’application qui la consomme et l’API elle-même, qui ne doivent pas se comprendre.
Des adaptateurs peuvent être utilisés pour adapter la même implémentation à différentes politiques.