-
Notifications
You must be signed in to change notification settings - Fork 51
Open
Description
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.Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels