Una palabra: no.
Más palabras: la inyección de dependencia es exactamente eso. Es un medio por el cual introduce recursos de los que depende otro objeto, pero no debe conocer los detalles intrincados de otra fuente. Usar DI no significa que NADA en su programa deba saber cómo crear cualquier otro objeto; de hecho, considero que es altamente inviable que un programa no trivial evite por completo la "nueva" palabra clave (o alternativas basadas en la reflexión). Sin embargo, DI significa que los objetos que no deberían TENER que saber cómo crear objetos complejos que requieren muchas dependencias que acoplarán estrechamente este objeto con el otro, no deberían tener todo este conocimiento estrechamente acoplado.
Estudiaría las dos principales teorías del diseño de software de O / O, GRASP y SOLID. GRASP le dirá que estudie el propósito del objeto y se preguntará: "¿Debería este objeto ser responsable de crear nuevos objetos de este otro tipo? ¿Es eso parte de la 'descripción del trabajo' de este objeto?" SOLID va un paso más allá: la "S" representa el "Principio de responsabilidad única", que establece inequívocamente que un objeto debe tener un trabajo, y debe ser el único objeto en el programa que hace ese trabajo específico.
Por lo tanto, GRASP generalmente lo alentaría a que revise sus clases existentes para las que crea estos nuevos objetos, y encuentre uno para el cual la tarea de crear este objeto se ajuste a lo que el objeto ya hace, mientras mantiene el nivel deseado de "cohesión". SOLID le dirá que la cohesión es clave; La tarea de crear estos objetos debe asignarse a alguna fábrica que debe inyectarse en su clase. Creo que descubrirá, a medida que la complejidad de su programa continúa creciendo, que el cumplimiento de cualquiera de estas metodologías, con la voluntad de refactorizar, dará como resultado arquitecturas muy similares.