装饰模式
示例:

package zhuangshi;
//具体装饰类,子类,构造函数里向父类传参,输出,新方法fly
public class Airplane extends Changer{
public Airplane(Transform transform) {
super(transform);
System.out.println("我是一架飞机");
}
public void fly() {
System.out.println("在天空飞翔");
}
}
package zhuangshi;
//作为其子类,实现move方法,输出在陆地上移动,车的构造函数中输出变形
public class Car implements Transform{
public Car(){
System.out.println("我是一辆车");
}
public void move(){
System.out.println("我是一辆车,我在移动");
}
}
package zhuangshi;
//抽象装饰类,采用构造注入,调用move方法
public class Changer implements Transform{
private Transform transform;
public Changer(Transform transform){
this.transform=transform;
}
public void move() {
transform.move();
}
}
package zhuangshi;
public class Client {
public static void main(String[] args) {
Transform camaro;
camaro=new Car();
camaro.move();
System.out.println("--------------------------");
Airplane airplane=new Airplane(camaro);
airplane.move();
airplane.fly();
}
}
package zhuangshi;
//抽象构建类,接口,生命的move方法
public interface Transform {
public void move();
}
浙公网安备 33010602011771号