Design Patterns - Decorator Pattern
Key words: Class explosion, Recursive function, Deprecated function
UML
Not Good Design
Better Design
Pseudo Code
abstract class Beverage {
public abstract int cost();
}
abstract class AddonDecorator extends Beverage {
public abstract int cost();
}
class Espresso extends Beverage {
public int cost() {
return 1;
}
}
class Caramel extends AddonDecorator {
Beverage beverage;
public Caramel(Beverage b) {
this.beverage = b;
}
public int cost() {
return this.beverage.cost() + 2;
}
}
Beverage b = new Caramel(new Espresso());
b.cost();