Skip to content

Implementar interfaz Character para permitir extensión sin modificar código (OCP) #5

@Guroven

Description

@Guroven

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions