Estoy totalmente en desacuerdo con que aumenta el acoplamiento.
Sin inyección de dependencia, tiene un acoplamiento estrecho entre un subsistema y la implementación concreta de la dependencia.
Con la inyección de dependencia ha desacoplado el subsistema de la implementación de la dependencia.
Hacer el argumento de que aumenta el acoplamiento entre el consumidor y este subsistema es MUY cuestionable, ya que implica que el consumidor ahora está estrechamente vinculado a la dependencia requerida por el subsistema. Todo lo que significa es que está escribiendo un código estrechamente acoplado que une a su consumidor con la dependencia. Idealmente TODO su código está desacoplado.
Inyección de constructor:
La resolución de dependencia es manejada por un contenedor de inyección de dependencia o una fábrica. El consumidor puede obtener una implementación concreta del subsistema desde el contenedor de inyección de dependencia o una fábrica.
El consumidor no necesita saber cómo se ve el constructor del subsistema. No hay acoplamiento a la dependencia del subsistema.
Método de inyección:
Lo mismo que la inyección del constructor, excepto que ahora el consumidor necesita obtener una instancia concreta de la dependencia del contenedor o la fábrica (o incluso hacer que se inyecte el método / constructor) e inyectarlo en el método. Nuevamente, el consumidor no está acoplado a una implementación concreta de la dependencia.
TL; DR El
peor caso para la inyección de dependencia en un subsistema es que el acoplamiento se cambia al código del consumidor. NO HAY UN INCREMENTO TOTAL EN EL ACOPLAMIENTO.
El mejor de los casos es que todos los sistemas ahora están acoplados libremente y la inyección de dependencia se controla a través de contenedores o fábricas de inyección de dependencia.