装饰者模式
定义:动态的将新功能附加到对象上。在对象功能扩展方面,他比继承更有弹性。装饰者模式也体现了开闭原则。
UML类图结构
装饰者模式简单实现
代码实现:
DrinkComponent类:
public interface DrinkComponent {
void drink();
}
Coffee类:
public class Coffee implements DrinkComponent {
public void drink() {
System.out.println("喝一杯咖啡");
}
}
Seasoning类:
public class Seasoning implements DrinkComponent {
DrinkComponent dc;
public Seasoning(DrinkComponent dc){
this.dc = dc;
}
public void drink() {
}
}
Milk类:
public class Milk extends Seasoning {
public Milk(DrinkComponent dc) {
super(dc);
}
public void drink() {
dc.drink();
System.out.println("这杯咖啡加了牛奶");
}
}
测试在咖啡中加入牛奶:
public class test {
public static void main(String[] args) {
DrinkComponent coffee = new Coffee();
Milk milk = new Milk(coffee);
milk.drink();
//喝一杯咖啡,这杯咖啡加了牛奶
}
}