装饰模式

示例:
image

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();
    
}
posted @ 2025-12-18 21:48  f-52Hertz  阅读(3)  评论(0)    收藏  举报