смотри
есть класс А, внутри него через new
делается класс B
это жесткая прямая зависимость
через DI ты можешь класс B инжектить, зависимость становится менее жесткой, но всё еще прямой
а если у тебя класс А должен быть стабилен и он хрупкий, но изменений в него вносится не много
а в класс B изменения вносятся много
поскольку у тебя A -> B, то А тоже становится менее стабилен
ты делаешь класс С, который зависит от А и B
получается вместо А -> B => A <- C -> B
класс С можно сделать проще и надежнее и проблема становится меньше