aboueleyes / aboueleyes/the-conqueror

Sugerencia del Patrón de diseño FactoryMethod

Aberta
#113 0 comentários 0 reações 0 responsáveis Ver no GitHub
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.

Image

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

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.