Sobes.tech
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.