/* All Contributors (C) 2020 */
package cn.edu.jxnu.examples.design.decorator;

public class ConcreteDecorator extends Decorator {
    // 实现了抽象装饰器定义的功能
    public ConcreteDecorator() {
        super();
    }

    /** //构造传入组件, super(inst); public Decorator(Component inst) { this.instance = inst; } */
    public ConcreteDecorator(Component inst) {
        super(inst);
    }

    @Override
    public void methodA() {
        this.getInstance().methodA();
        this.doAdditionalResponsibility();
        // 在原有组件功能上，添加功能，在外界看来，就想使用了methodA方法所做的事情更多了，接口没有变，与适配器的区别
    }

    private void doAdditionalResponsibility() {
        System.out.println("被包装的功能");
    }
}
