装饰者模式,通过构造方法传参方式获取装饰类的装饰业务

106 阅读1分钟
/**
 * 装饰者模式,通过构造方法传参方式获取装饰类的装饰业务
 */
public class main {
    public static void main(String[] args) {
        Decorator d1 = new Decorator1();
        Decorator d2 = new Decorator2(d1);
        Decorator d3 = new Decorator3(d2);
        d3.decorator();
    }
}

public abstract class Decorator {
    public Decorator() {    }
    public Decorator(Decorator d) {    }
    abstract void decorator();
}

public class Decorator1 extends Decorator {
    private Decorator decorator;
    public Decorator1() {
        super();
    }
    void decorator() {
        System.out.println("执行装饰类 Decorator1 --- 装饰方法 Decorator");
    }
}

public class Decorator2 extends Decorator {
    private Decorator decorator;
    public Decorator2() {
        super();
    }
    public Decorator2(Decorator decorator) {
        this.decorator = decorator;
    }
    void decorator() {
        if(this.decorator!=null){
            this.decorator.decorator();
        }
        System.out.println("执行装饰类 Decorator2 --- 装饰方法 Decorator");
    }
}

public class Decorator3 extends Decorator {
    private Decorator decorator;
    public Decorator3() {
        super();
    }
    public Decorator3(Decorator decorator) {
        this.decorator = decorator;
    }
    void decorator() {
        if(this.decorator!=null){
            this.decorator.decorator();
        }
        System.out.println("执行装饰类 Decorator3 --- 装饰方法 Decorator");
    }
}