姬長信(Redy)

设计模式 – 将实例变量移动到装饰器模式…


在关于装饰器模式的章节中的“头部设计模式(2014年,第2版)”一书中,作者从4种调味品类(牛奶,摩卡,大豆,鞭子)中采用实例变量饮料饮料并将其放入摘要中class CondimentDecorator. (参见第110页,getSize()的解决方案 – 问题)

public abstract class CondimentDecorator extends Beverage{
  public Beverage beverage;
  public abstract String getDescription();

  public Size getSize(){
    return beverage.getSize();
  }
}

将实例变量饮料饮料从调味品类移动到抽象类CondimentDecorator的原因是什么?

他们这样做是为了保存一些代码行吗,因为现在调味品不需要声明自己的实例变量,因为它们从抽象类继承它?

咖啡店的UML图在移动实例变量之前: