Implementar interfaz Character para permitir extensión sin modificar código (OCP)
El código actual no permite agregar nuevos tipos de personajes (por ejemplo, enemigos adicionales o personajes jugables distintos) sin modificar las clases existentes. Esto viola el principio de Abierto/Cerrado, ya que el sistema está cerrado a la extensión y abierto a la modificación.
Problemas encontrados:
Los personajes (Pacman, Ghost) están definidos explícitamente dentro del código del Board o GameController. Para agregar un nuevo personaje, se deben modificar los métodos move(), draw(), o updateGame().
Impacto:
Riesgo de introducir errores al modificar clases estables. Dificultad para escalar el juego con nuevos tipos de personajes o comportamientos. Dependencia rígida de tipos concretos.
Propuesta de solución: Crear una interfaz o clase abstracta Character con los métodos comunes:
interface Character { void move(); void draw(Graphics2D g); }
Y hacer que las clases Pacman, Ghost y futuras (PowerGhost, SuperPacman, etc.) implementen esta interfaz. De este modo, se podrán agregar nuevos personajes sin modificar el código base.