Siempre he sabido que Singleton es "malo", pero solo ahora que he realizado el cambio a Java desde C++ he decidido encontrar una forma de evitarlos. A partir de un poco de lectura, he descubierto que Factories o Dependency Injection podrían hacer el trabajo, pero me gustaría obtener alguna confirmación al respecto.Uso de Dependency Injection como alternativa a Singletons
Como ejemplo, estaba a punto de escribir un singleton de AnimationCache que almacenara un Map<String, Animation>
. Las diferentes clases deberían poder acceder a esta clase (básicamente) en cualquier lugar para que puedan cargar Animaciones de manera fácil y eficiente. Un ejemplo muy breve de cómo se vería el código equivalente con DI sería genial.
Además, ¿es Guice un buen marco para DI con aplicaciones que no son web? Utilicé Spring para el desarrollo web, pero no estoy tan seguro de que funcione para juegos.
Spring DI no es solo para aplicaciones web. – gtiwari333
Actualización: También es posible que desee considerar [CDI 2.0 - Contexts & Dependency Injection for Java] (http://cdi-spec.org). Estandarizado en [JSR 365] (https://jcp.org/en/jsr/detail?id=365) a partir de 2017-04. Diseñado para * ambos * Java SE y Java EE. –
Esta pregunta y sus respuestas pueden ser relevantes para futuros lectores: https://stackoverflow.com/questions/130794/what-is-dependency-injection?rq=1 – Cypher