装饰模式(decorator)

定义:动态的给一个对象添加一些额外的职责.就增加功能来说,装饰模式相比生成子类更为灵活. 优点:装饰类和被装饰类互相不会耦合,是继承关系的替代,动态扩展实现类. 缺点:多层装饰增加了系统的复杂度.

1.1. 角色:

抽象构件:是一个接口或者抽象类,定义需要被装饰的对象. 具体构件:抽象构件的实现. 装饰角色:一般是抽象类,实现抽象构件,并属性有个private的抽象构件变量 具体装饰对象:装饰角色的实现

抽象装饰类

public abstract class AbstractDecorator extends AbstractComponent {
    /** 被修饰者 */
    private AbstractComponent component = null;

    /**
     * @Description  通过构造函数传递被修饰者
     * @param component   
     */
    public AbstractDecorator(AbstractComponent component) {
        this.component = component;
    }

    /**  
     * @Description  委托被修饰者执行
     */
    @Override
    public void operate() {
        this.component.operate();
    }
}

具体装饰类

public class ConcreteDecorator1 extends AbstractDecorator {
    /**
     * @Description  定义被修饰者
     */
    public ConcreteDecorator1(AbstractComponent component) {
        super(component);
    }

    private void method1() {
        System.out.println("method1 修饰");
    }

    /**  
     * @Description  重写父类方法
     */
    @Override
    public void operate() {
        this.method1();
        super.operate();
    }
}

results matching ""

    No results matching ""