Ich bin absolut anderer Meinung, dass es die Kopplung erhöht.
Ohne Abhängigkeitsinjektion besteht eine enge Kopplung zwischen einem Teilsystem und der konkreten Implementierung der Abhängigkeit.
Mit der Abhängigkeitsinjektion haben Sie das Subsystem von der Implementierung der Abhängigkeit abgekoppelt.
Das Argument, dass es die Kopplung zwischen dem Verbraucher und diesem Teilsystem verstärkt, ist SEHR fraglich, da dies impliziert, dass der Verbraucher jetzt eng an die vom Teilsystem geforderte Abhängigkeit gekoppelt ist. Alles was es bedeutet ist, dass Sie eng gekoppelten Code schreiben, der Ihren Konsumenten an die Abhängigkeit koppelt. Idealerweise ist ALLER Code entkoppelt.
Konstruktor-Injektion:
Die Abhängigkeitsauflösung wird von einem Abhängigkeitsinjektionscontainer oder einer Fabrik übernommen. Der Verbraucher kann eine konkrete Implementierung des Teilsystems aus dem Abhängigkeitseinspritzbehälter oder einer Fabrik erhalten.
Der Verbraucher muss nicht wissen, wie der Konstruktor des Teilsystems überhaupt aussieht. Es besteht keine Kopplung an die Subsystemabhängigkeit.
Methode Injection:
Entspricht der Konstruktorinjektion, mit der Ausnahme, dass der Konsument jetzt eine konkrete Instanz der Abhängigkeit aus dem Container oder der Fabrik abrufen muss (oder sogar die Methode / den Konstruktor injizieren lassen muss) und sie in die Methode injizieren muss. Auch hier ist der Verbraucher nicht an eine konkrete Umsetzung der Abhängigkeit gekoppelt.
TL; DR Der
schlimmste Fall für die Abhängigkeitsinjektion in einem Subsystem ist, dass die Kopplung auf Consumer-Code verschoben wird. ES GIBT KEINE ERHÖHUNG DER KUPPLUNG.
Der beste Fall ist, dass alle Systeme jetzt lose gekoppelt sind und die Abhängigkeitsinjektion über Abhängigkeitsinjektionsbehälter oder -fabriken gesteuert wird.