装饰者模式是允许向一个新对象添加新的功能,但又不改变其结构。这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。
就增加功能来说,装饰器模式相比生成子类更为灵活。
例子:
如果我们去咖啡店,有一种咖啡,该咖啡可以加糖,牛奶,奶泡等等,如果我们需要加糖和牛奶,常规的写法就是分别继承糖的接口和牛奶的接口,然后实现。但是如果添加种类很多的话,就会形成大量的继承类,给维护造成很大的麻烦。这就需要继承类来为其添加新功能了。
Coffee接口
public abstract class Coffee {
public abstract int getPrice();
public abstract String getName();
}
原始咖啡
public