Je ne suis pas du tout d'accord pour dire que cela augmente le couplage.
Sans injection de dépendance, vous avez un couplage étroit entre un sous-système et la mise en œuvre concrète de la dépendance.
Avec l'injection de dépendance, vous avez découplé le sous-système de la mise en œuvre de la dépendance.
Argumenter sur le fait qu'il augmente le couplage entre le consommateur et ce sous-système est TRÈS discutable car cela implique que le consommateur est maintenant étroitement couplé à la dépendance requise par le sous-système. Tout ce que cela signifie, c'est que vous écrivez un code étroitement couplé qui couple votre consommateur à la dépendance. Idéalement ALL votre code est découplé.
Injection de constructeur:
La résolution des dépendances est gérée par un conteneur d'injection de dépendances ou une usine. Le consommateur peut obtenir une implémentation concrète du sous-système à partir du conteneur d'injection de dépendance ou d'une usine.
Le consommateur n'a pas besoin de savoir à quoi ressemble le constructeur du sous-système. Il n'y a pas de couplage avec la dépendance du sous-système.
Méthode d'injection:
Identique à l'injection de constructeur, sauf que le consommateur doit maintenant obtenir une instance concrète de la dépendance du conteneur ou de l'usine (ou même l'injecter méthode / constructeur) et l'injecter dans la méthode. Encore une fois, le consommateur n'est pas associé à une implémentation concrète de la dépendance.
TL; DR Le
pire cas d'injection de dépendance dans un sous-système est que le couplage est décalé vers le code consommateur. IL N'Y A AUCUNE AUGMENTATION GLOBALE DU COUPLAGE.
Le meilleur des cas est que tous les systèmes sont maintenant faiblement couplés et que l'injection de dépendance est contrôlée par le biais de conteneurs ou d'usines d'injection de dépendance.