Skip to content

Corrección de OCP en CustomerCheckIn y CustomerCheckOut #6

@Eduidk28

Description

@Eduidk28

Violación del OCP (Open/Closed Principle)

Violación del OCP en CustomerCheckIn y CustomerCheckOut

Descripción del problema

Los tipos de habitación (AC, NON AC, Single, Double) están codificados directamente dentro del código:

comboroomtype.setModel(new DefaultComboBoxModel<>(new String[] { "AC", "NON AC" }));

public interface Room {
    String getType();
    String getBedType();
    double getPrice();
}
public class ACRoom implements Room {
    public String getType() { return "AC"; }
    public String getBedType() { return "Double"; }
    public double getPrice() { return 80.0; }
}

public class NonACRoom implements Room {
    public String getType() { return "NON AC"; }
    public String getBedType() { return "Single"; }
    public double getPrice() { return 50.0; }
}

public class SuiteRoom implements Room {
    public String getType() { return "SUITE"; }
    public String getBedType() { return "King"; }
    public double getPrice() { return 120.0; }
}
#### Uso en clase de CustomerService
public void assignRoom(Room room, Customer customer) throws Exception {
    customer.setRoomType(room.getType());
    customer.setBedType(room.getBedType());
    customer.setPrice(room.getPrice());
    repo.save(customer);
}
Beneficios
Nuevos tipos de habitación se añaden creando clases nuevas, no modificando código existente.
Cumple OCP al permitir extensión sin alteración.

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