Я категорически не согласен, что это увеличивает сцепление.
Без внедрения зависимости у вас есть тесная связь между подсистемой и конкретной реализацией зависимости.
С внедрением зависимости вы отсоединили подсистему от реализации зависимости.
Утверждение о том, что это увеличивает связь между потребителем и этой подсистемой, ОЧЕНЬ сомнительно, поскольку подразумевает, что потребитель теперь тесно связан с зависимостью, требуемой подсистемой. Все это означает, что вы пишете тесно связанный код, который связывает вашего потребителя с зависимостью. В идеале ВСЕ ваш код отделен.
Конструктор Инъекция:
Разрешение зависимостей обрабатывается контейнером внедрения зависимостей или фабрикой. Потребитель может получить конкретную реализацию подсистемы из контейнера ввода зависимостей или с фабрики.
Потребителю не нужно знать, как выглядит конструктор подсистемы. Нет связи с зависимостью подсистемы.
Метод инъекции:
То же, что и инъекция в конструктор, за исключением того, что теперь потребителю нужно получить конкретный экземпляр зависимости из контейнера или фабрики (или даже вставить его метод / конструктор) и внедрить его в метод. Опять же, потребитель не связан с конкретной реализацией зависимости.
TL; DR
Наихудший случай для внедрения зависимостей в подсистеме - это то, что связь сдвинута на потребительский код. НЕТ ОБЩЕГО УВЕЛИЧЕНИЯ МУФТЫ.
В лучшем случае все системы теперь слабо связаны, а внедрение зависимостей контролируется через контейнеры или фабрики внедрения зависимостей.