Junior — Middle
¿Puede explicar la concepto y la aplicación del patrón Decorador en la programación orientada a objetos?
sobes.tech AI
Respuesta de la IA
El patrón Decorador permite agregar dinámicamente nuevas responsabilidades a los objetos, envolviéndolos en otros objetos decoradores, sin modificar el código fuente de la clase. Esto es especialmente útil cuando se necesita ampliar la funcionalidad sin herencia.
Ejemplo: hay una interfaz base Bebida con el método costo(). Se puede crear una clase Café, y luego decoradores ConLeche, ConAzúcar, que añaden costo y cambian el comportamiento.
interface Bebida {
double costo();
}
class Cafe implements Bebida {
public double costo() { return 5.0; }
}
class DecoradorLeche implements Bebida {
private Bebida bebida;
public DecoradorLeche(Bebida bebida) { this.bebida = bebida; }
public double costo() { return bebida.costo() + 1.0; }
}
// Uso
Bebida cafe = new Cafe();
Bebida cafeConLeche = new DecoradorLeche(cafe);
System.out.println(cafeConLeche.costo()); // 6.0
De esta forma, se puede combinar la funcionalidad de manera flexible sin crear múltiples subclases.