装饰模式:
动态的给对象增加功能,要求装饰者对象和被装饰者对象有相同的抽象父类或者接口。
- 装饰者和被装饰者有着相同的超类型
- 可以使用多个装饰者来装饰一个对象
- 对象可以在任何时候被装饰。
- 该模式会用到继承,目的是为了让装饰者和被装饰者有相同的父类类型。
class Coffee{
public String drink(){
return "coffee";
}
}
class MilkCoffee extends Coffee{
Coffee coffee;
public MilkCoffee(Coffee coffee){
this.coffee=coffee;
}
public String drink(){
return "milk"+coffee.drink();
}
}
class SugerCoffee extends Coffee{
Coffee coffee;
public SugerCoffee(Coffee coffee){
this.coffee=coffee;
}
public String drink(){
return "suger"+coffee.drink();
}
}