装饰模型请教

我目前找到的模板
设计模式——装饰模式(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对象?

阅读 916
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏