// 抽象构建组件
public interface ICar {
void move();
}
// 具体构建组件
class Car implements ICar {
@Override
public void move() {
System.out.println("在路上跑");
}
}
// 抽象装饰器
class SuperCar implements ICar {
ICar car;
SuperCar(ICar car) {
this.car = car;
}
@Override
public void move() {
car.move();
}
}
// 具体装饰器
class AICar extends SuperCar {
AICar(ICar car) {
super(car);
}
public void autoMove() {
System.out.println("自动驾驶");
}
public void move() {
super.move();
autoMove();
}
}
从这里我们看出来,一个具体装饰器可以装饰多个具体构建组件,一个具体构建组件也可以有多个具体装饰器。它们之间没有耦合,彼此独立,从而可以达到动态增加功能。
我们在学习一个东西时可以去找它的核心思想,把它归纳为几个关键字去记忆。
装饰模式的关键词