我目前找到的模板
设计模式——装饰模式(Decorator)
具体代码看原文即可。
我的问题是,既然具体的装饰类都要持有一个Beverage,为什么不能在抽象装饰类里面持有Beverage
即
public class Decorator implements Beverage {
private String description = "我只是装饰器,不知道具体的描述";
protected Beverage beverage = null;
@Override
public String getDescription() {
return this.beverage.getDescription();
}
@Override
public double getPrice() {
return this.beverage.getPrice(); //价格由子类来决定
}
在子类里面都删去private Beverage beverage = null;
这样不是更简洁?
我猜原作者为了更灵活,所以在子类中持有Component对象?