Veo esto bastante y me preguntaba si había alguna manera de refactorizar esto para evitar el cambio masivo. Este es un método en una fábrica: RoomControllerFactory, instanciando una ubicación de juego según su tipo. He aquí un ejemplo de un cambio en el método de fábrica:¿Hay alguna alternativa a cambiar en un método de fábrica?
switch (location.getType())
{
case Location.ROOMONE:
return new RoomOneController(location, data, view);
case Location.ROOMTWO:
return new RoomTwoController(location, data, view);
case Location.ROOMTHREE:
return new RoomThreeController(location, data, view);
No sé actionscript, pero usaría una tabla hash para registrar los tipos de las diferentes ubicaciones con un RoomControllerFactory que a su vez puede instanciar el RoomController correcto. tan pronto en C# inicialmente roomControllerFactories [location.getType()] = new RoomOneControllerFactory(); seguido más tarde por: roomControllerFactories [location.getType()]. create (ubicación, datos, vista); – Polity
¿Se instancian estas instancias de RoomController más de una vez en el programa? Por ejemplo, si fuera un laberinto, ¿tendría varias instancias de TeeIntersectionRoomController? ¿O estos casos son absolutamente únicos en el juego, por ejemplo, BuckinghamPalaceThroneRoomController? Esto * podría * afectar la mejor solución ... – jpwrunyan
Existen al mismo tiempo, es decir, cuando vas a la ubicación, pero actualmente están instanciados más de una vez, es decir, si vuelves a roomone recrearemos la habitación 1. Pero también algunos las habitaciones son únicas, algunas son lo suficientemente abstractas, pueden usarse para representar a más de una, por ejemplo, una tienda de tipo de habitación puede usarse para diferentes ubicaciones solo por datos, a la venta, pero una habitación tipo habitación propia solo se usará una vez. Espero que eso esté claro. :) – serenskye