标题装饰模式(Decorator)
主要代码结构
public interface ICar {
void move();
}
class Car implements ICar{
@Override
public void move() {
System.out.println("车子在陆地上跑");
}
}
class SuperCar implements ICar{
protected ICar car;
public SuperCar(ICar car) {
super();
this.car = car;
}
@Override
public void move() {
car.move();
}
}
class FlyCar extends SuperCar{
public FlyCar(ICar car) {
super(car);
}
public void fly(){
System.out.println("天上飞!!!");
}
@Override
public void move() {
super.move();
fly();
}
}
class WaterCar extends SuperCar{
public WaterCar(ICar car) {
super(car);
}
public void water(){
System.out.println("水上漂!!!");
}
@Override
public void move() {
super.move();
water();
}
}
class AICar extends SuperCar{
public AICar(ICar car) {
super(car);
}
public void autoMove(){
System.out.println("无人驾驶!!!");
}
@Override
public void move() {
super.move();
autoMove();
}
}
测试代码
public static void main(String[] args) {
Car car = new Car();
car.move();
System.out.println("增加飞的功能----------");
FlyCar flyCar = new FlyCar(car);
flyCar.move();
System.out.println("增加水上跑的功能----------");
WaterCar waterCar = new WaterCar(car);
waterCar.move();
System.out.println("增加飞和自动驾驶----------");
AICar aiCar = new AICar(new FlyCar(car));
aiCar.move();
}