Vale, como de momento según he entendido, Challenge engloba a todos los juegos y Question es un tipo de challenge
y más tarde habrá más, he pensado en implementar el patrón de la siguiente forma.
Hay que crear (de momento) las clases ChallengeBuilder, QuestionBuilder y la clase director, que se puede llamar
Director o como queramos.
La clase Director simplemente crea el objeto, así que tendría un método Construct( ) simple y ya está.
La clase ChallengeBuilder sería como una interfaz de la que hereda QuestionBuilder y tiene un getter para devolver el
objeto Challenge y declara los métodos que usarán los objetos que hereden de ella.
QuestionBuilder tendría un constructor que se encargaría de crear un objeto Challenge de tipo Question, por así
decirlo, y en esta clase se definirían también los métodos declarados en ChallengeBuilder.
La clase Challenge supongo que sirve la que está ya creada en la carpeta Entities, no sé si habría que añadirle algún
método o algún atributo. Algo habría que hacer pero de momento ya está creada y no hace falta tocarla.
Luego, en la clase principal, en el método “main” se crearían los objetos así:
Básicamente crearíamos un objeto ChallengeBuilder principal y después lo definiríamos del tipo que fuera, lo
construímos, y ya implementar lo que queramos que haga y au.
Otras cosas que he pensado:
-
Crear una clase Answer en Entities, que no tendría mucho, un string y un boolean que indicara si es correcta o
no, para no tener que crearlo aparte, aunque no sé si sería mucho lío para luego asociarla a cada pregunta
pero no creo.
Así, a la hora de crear las Question se le añaden las Answers con un método addAnswers o algo así simple y ya
está (se puede hacer perfectamente con strings si queréis también).
-
Dependiendo de en qué consistiera cada juego, igual habría que crear más de una interfaz, porque puede ser
que no todos los juegos implementen todos los métodos de ChallengeBuilder, y daría error.
-
Para este último problema, no sé si se podrían definir los métodos directamente en la interfaz IService, aunque
no sé si esto cumple con el patrón, simplemente se me ha ocurrido por buscar una solución a lo de los distintos
tipos de juegos y no tener que hacer varias interfaces.