装饰模式

1.定义

装饰(Decorator)模式 : 动态地给一个对象添加一些额外的职责.就增加功能来说,Decorator模式相比生成子类更为灵活.

百度百科-装饰模式

2.实现

装饰模式

  • 抽象构件(Component)角色: 给出一个抽象接口,以规范准备接收附加责任的对象.抽象构件角色作为整个装饰模式类图体系的超类,其子类均可以被增添附加责任.
  • 具体构件(Concrete Component)角色: 定义一个将要接收附加责任的类.
  • 装饰(Decorator)角色: 持有一个构件(Component)对象的实例,并定义一个与抽象构件接口一致的接口.
  • 具体装饰(Concrete Decorator)角色: 负责给构件对象增添附加的责任.
public interface Component {
    /**
     * 业务操作
     */
    void operation();
}

public class ConcreteComponent implements Component{
    @Override
    public void operation() {
        System.out.print("common operation + ");
    }
}

public class Decorator implements Component {
    private Component component;
    Decorator(Component component){
        this.component = component;
    }

    @Override
    public void operation() {
        // 委派给构件
        component.operation();
    }
}

public class ConcreteDecoratorA extends Decorator {

    public ConcreteDecoratorA(Component component) {
        super(component);
    }

    @Override
    public void operation() {
        super.operation();
        System.out.println("DecoratorA operation");
    }
}

public class ConcreteDecoratorB extends Decorator {

    public ConcreteDecoratorB(Component component) {
        super(component);
    }

    @Override
    public void operation() {
        super.operation();
        System.out.println("DecoratorB operation");
    }
}

客户端:

public static void main(String[] args) {
    Component component = new ConcreteComponent();

    Component componentA = new ConcreteDecoratorA(component);
    Component componentB = new ConcreteDecoratorB(component);

    componentA.operation();
    componentB.operation();
}

results matching ""

    No results matching ""