装饰器

151 阅读1分钟

原理

装饰器模式(Decorator)的角色:

  • 抽象组件(Component) :声明装饰器和被装饰组件的接口标准
  • 具体组件(ConcreteComponent):实现抽象组件,完成抽象组件的基本功能
  • 装饰器(Decorator):也是抽象组件的子类,持有抽象组件的引用,调用抽象组件的实现
  • 具体装饰器(ConcreteDecorator)

UML类图

无标题-2025-05-07-0952.png

代码示例

/**
 * 抽象组件
 */
public abstract  class Component {

    /**
     * 抽象方法
     */
    public abstract  void operation();

}
/**
 * 具体组件
 */
public class ConcreteComponent extends Component {


    @Override
    public void operation() {
        /*
            实现基础能力
         */
        System.out.println("ConcreteComponent operation");
    }
}
/**
 * 装饰器
 */
public class Decorator extends Component {

    private Component component;

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

    @Override
    public void operation() {
        //调用基础能力方法
        component.operation();
    }
}
/**
 * 具体装饰器
 */
public class ConcreteDecorator extends Decorator {

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

    @Override
    public void operation() {
        super.operation();
        additionalOperation();
    }

    /**
     * 新增逻辑
     */
    public void additionalOperation() {
        System.out.println("additional operation");
    }
}