美文网首页
Head First 设计模式(3)装饰模式

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

作者: kaiker | 来源:发表于2021-07-11 16:23 被阅读0次

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

相关文章

网友评论

      本文标题:Head First 设计模式(3)装饰模式

      本文链接:https://www.haomeiwen.com/subject/fyecpltx.html