aboueleyes / aboueleyes/the-conqueror
Sugerencia del Patrón de diseño FactoryMethod
- Linguagem predominante
- Java
- Estrelas
- 18
- Forks
- 3
- Métricas de merge de PRs
- Nenhum PR com merge em 30d
Descrição
Actualmente, el proceso de reclutamiento de tropas depende de la clase UnitFactory, la cual utiliza una cadena de condicionales if/else basados en Strings para decidir qué unidad instanciar (Archer, Cavalry, Infantry).
Esta estructura viola el Principio Abierto/Cerrado (OCP), ya que cualquier futura adición de nuevas unidades al juego obligaría a modificar directamente esta clase central, aumentando el acoplamiento y el riesgo de introducir bugs.
Solución Propuesta (Factory Method):
Implementar el patrón de diseño Factory Method para descentralizar la creación de unidades, delegando esta responsabilidad a las clases concretas de los edificios:
Utilizar la clase abstracta MilitaryBuilding como el creador base, definiendo el método abstracto public abstract Unit recruit();.
Hacer que cada edificio específico (Barracks, Stable, ArcheryRange) implemente este método para instanciar y retornar exclusivamente la tropa que le corresponde (Infantry, Cavalry, Archer respectivamente).
Eliminar por completo la clase UnitFactory, ya que el polimorfismo manejará la creación de ahora en adelante.
Guia de contribuição
Nenhum guia de contribuição indexado para este repositório
Direção de pesquisa
Find the UnitFactory class and the MilitaryBuilding abstract class. Examine how units (Archer, Cavalry, Infantry) are currently instantiated. Each concrete building (Barracks, Stable, ArcheryRange) needs to implement the abstract recruit() method to return its specific unit. Remove UnitFactory and update any code that calls it to use the new polymorphic recruitment.
Escrita pelo modelo de indexação a partir do texto da issue.
Avaliação
- Stack de tecnologia
- java
- Domínio
- game-dev
- Tipo de issue
- Refatoração
- Dificuldade
- 3/5
- Tempo estimado
- 1-2 dias
- Status de atividade
- Pouca atividade
- Clareza
- Claramente especificada
- Facilidade para iniciantes
- 65/100