Head First 设计模式(3)装饰模式

2021-07-11  本文已影响0人  kaiker

1、本章的例子——咖啡店

咖啡店提供几种咖啡,每种咖啡都可以加不同的小料,一旦组合起来会有非常多种类的咖啡

咖啡+小料能组合出非常多类

2、设计原则

类应该对扩展开放,对修改关闭

3、装饰者模式

动态地将责任附加在对象上,若要扩展功能,装饰者提供了比集成更有弹性的替代方案

解决小料很多的方法 装饰者类图

4、咖啡装饰

装饰模式咖啡
public abstract class Beverage {
  String description = "Unknown Beverage";

  public String getDescription() {
    return description;
  }

  public abstract double cost();
}


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

public class Espresso extends Beverage {
  public Espersso () {
    description = "Espresso";
  }

  public double cost() {
    return 1.99;
  }
}

public class Mocca extends CondimentDecorator {
  Beverage beverage; // 被装饰者

  public Mocha(Beverage beverage) {
    this.beverage = beverage;
  }
  
  // 开放变化
  public double cost() {
    return .20 + beverage.cost();
  }
}
咖啡装饰调用方法

5、java中的装饰者

java.io
上一篇 下一篇

猜你喜欢

热点阅读