处理流(概念)以及装饰器模式
** *抽象构件角色 */ 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) { 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(); } }
调用
Car car = new Car(); car.move(); System.out.println("增加一个新功能"); FlyCar flyCar = new FlyCar(car); flyCar.move(); System.out.println("增加两个新功能"); WaterCar waterCar = new WaterCar(flyCar); waterCar.move(); System.out.println("增加三个新功能"); AICar aiCar = new AICar(waterCar); aiCar.move();
结果:
在路上跑 增加一个新功能 在路上跑 天上飞 增加两个新功能 在路上跑 天上飞 水上游 增加三个新功能 在路上跑 天上飞 水上游 自动驾驶