He estado leyendo acerca de la inyección de dependencia y tengo una pregunta simple. Puedo entender cómo, a través de la inyección de constructores o del sistema, las dependencias requeridas son autoconectadas por el marco DI. ¿Qué sucede cuando un objeto decide que necesita crear un nuevo objeto debido a algún proceso comercial? ¿Necesito siempre crear una fábrica en estas situaciones? Para que sea una pregunta menos abstracta, aquí hay un ejemplo.Pregunta de novato sobre Dependency Injection cuando un método necesita crear objetos nuevos
Digamos que estoy escribiendo un juego de Asteriods. Hay un barco en el medio que puede girar y disparar a los asteroides. Supongamos que el barco ha sido creado y se han inyectado cosas apropiadas. Cuando se llama al playerShip.shoot()
, necesitamos crear un objeto bullet
. El objeto de viñeta necesita saber hacia dónde va (direction
) y dónde comenzar (point
).
Normalmente, me gustaría hacer algo como esto:
bullet = new Bullet(direction, point);
Sin embargo, las parejas que firmemente la clase PlayerShip a la clase de bala. ¿Cómo debería funcionar esto bajo inyección de dependencia? ¿Necesito crear una interfaz BulletFactory e inyectar una implementación de eso en la nave?
Editar: En realidad, no estoy escribiendo asteriods. Este fue un ejemplo simple que pensé que la gente entendería. Quería algo que necesitara ser creado un tiempo de ejecución (no mientras "conectaba objetos") que también tenía parámetros para su constructor.
Además, si "bala" en sí misma era un objeto muy complejo con su propio árbol de objetos, probablemente querrá una fábrica para evitar que Ship tenga dependencias a las dependencias de Bullet. – Epaga