Я категорично не згоден, що це посилює зв'язок.
Без введення залежності ви маєте тісний зв'язок між підсистемою та конкретною реалізацією залежності.
За допомогою ін'єкції залежності ви від'єднали підсистему від впровадження залежності.
Аргументація того, що вона збільшує зв’язок між споживачем та цією підсистемою, ДУЖЕ сумнівна, оскільки це означає, що споживач зараз жорстко пов'язаний із залежністю, яка вимагається від підсистеми. Все це означає, що ви пишете щільно зв'язаний код, який з'єднує вашого споживача із залежністю. В ідеалі ВСЕ ваш код відокремлений.
Інжекція конструктора:
Дозвіл залежності обробляється контейнером для нагнітання залежності або фабрикою. Споживач може отримати конкретну реалізацію підсистеми з контейнера для нагнітання залежностей або заводу.
Споживачеві не потрібно знати, як виглядає конструктор підсистеми. Немає зв'язку з залежністю від підсистеми.
Спосіб ін'єкції:
Те саме, що і введення конструктора, за винятком того, що зараз споживачеві потрібно отримати конкретний екземпляр залежності від контейнера або заводу (або навіть ввести його метод / конструктор) та ввести його в метод. Знову ж таки, споживач не пов'язаний з конкретною реалізацією залежності.
TL; DR
Найгіршим випадком введення залежності в підсистемі є те, що з'єднання переходить на споживчий код. НЕ ВІДКЛЮЧИТЬ ВІДПОВІДЕННЯ В СКЛАДУВАННІ.
Найкращий випадок полягає в тому, що зараз усі системи слабко пов'язані, а нагнітання залежностей контролюється через контейнери для ін'єкцій залежностей або фабрики.