Design Principle(Open-Closed Principle)

  • Classes should be open for extension, but closed for modification.

The Decorator Pattern attaches additional responsibilitis to an object dynamically.

Decorator provide a flexible alternative to subclassing for extending functionality.

Head First Design Patterns - Decorator Pattern

 

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 Espresso(){

    description = "Espresso";

  }

  public double cost(){

    return 1.99;

  }

}

public class HouseBlend extends Beverage{

  public HouseBlend(){

    description = "House Blend Coffee";

  }

  public double cost(){

    return 0.89;

  }

}

public class Mocha extends CondimentDecorator{

  Beverage beverage;

  public Mocha(Beverage beverage){

    this.beverage = beverage;

  }

  public String getDescription(){

    return beverage.getDescription +", Mocha";

  }

  public double cost(){

    return 0.20 + beverage.cost();

  }

}

 

Head First Design Patterns - Decorator Pattern

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-08-20
  • 2021-11-11
  • 2021-06-24
  • 2022-01-16
  • 2021-05-20
  • 2021-10-26
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案