Estoy refactorizando una aplicación PHP , y estoy tratando de hacer que la inyección de dependencia (DI) sea lo más posible.
Siento que tengo una buena comprensión de cómo funciona, y ciertamente puedo ver que mis clases se vuelven mucho más delgadas y robustas.
Estoy refactorizando para poder inyectar una dependencia en lugar de crear un nuevo objeto dentro de la clase, pero en algún momento tendré que crear algunos objetos, es decir, usar la newpalabra clave temida .
El problema con el que me he encontrado ahora es ¿en qué punto puedo realmente crear nuevos objetos? Parece que terminaré en una clase de nivel superior, creando montones de objetos nuevos ya que no hay otro lugar a donde ir. Esto se siente mal.
He leído algunos blogs que usan clases de fábrica para crear todos los objetos, y luego se inyecta la fábrica en otras clases. Luego puede llamar a los métodos de fábrica, y la fábrica crea el nuevo objeto para usted.
¡Mi preocupación por hacer esto es que ahora mis clases de fábrica serán newgratuitas! Supongo que esto puede estar bien, ya que son clases de fábrica, pero ¿hay algunas reglas a seguir cuando se usa un patrón de fábrica y DI, o estoy yendo muy lejos de aquí?
new. Por supuesto, hay algunos puntos de entrada donde debe llamar al contenedor de IoC, pero no debería haber muchos. Por lo general, configura el IoC una vez y luego solicita que se resuelva una clase por solicitud. En el caso de MVC, ese es típicamente el controlador.