Método de decorador, un tipo de decorador en Java
Estoy en el proceso de aprender a usar el patrón decorador, y me encontré con un problema que considero es simple pero parece que no puedo encontrar la respuesta. Digamos que tengo una clase de bebidas que es abstracta. Entonces, digamos que tengo algunos componentes concretos que extienden la bebida: americano, espresso, café con leche, etc. Y también una clase de condimento abstracto que extiende la bebida. La clase de condimentos tiene múltiples subclases: leche, azúcar, soja, látigo. Cada una de las subclases de condimentos tiene un método de costo y getdescription () heredado de Bebidas y Condimentos, respectivamente. Mi pregunta es, ¿cómo puedo evitar que una determinada instancia de Bebida tenga más de un condimento del mismo tipo asociado al realizar la prueba? Sé que podría guardar un condimento en una lista y verificar si existe al agregar un condimento nuevo, solo quería ver si existía una mejor opción.
Clase de bebidas
public abstract class Beverage {
String description = "Unknown Beverage";
public String getDescription() {
return description;
}
public abstract double cost();
}
Decorador de condimentos
public abstract class CondimentDecorator extends Beverage {
public abstract String getDescription();
}
Clase DarkRoast
public class DarkRoast extends Beverage {
public DarkRoast() {
description = "Dark Roast Coffee";
}
public double cost() {
return .99;
}
}
Clase de soja
public class Soy extends CondimentDecorator {
Beverage beverage;
public Soy(Beverage beverage) {
this.beverage = beverage;
}
public String getDescription() {
return beverage.getDescription() + ", Soy";
}
public double cost() {
return .15 + beverage.cost();
}
}
Si alguien pudiera ayudarme o incluso señalarme un buen artículo o tutorial, lo agradecería enormemente.