应用场景

装饰者类是对功能的增强,装饰者增强的是跟原始类相关的功能

类结构

decoration.jpg

  1. public abstract class Component {
  2. public abstract void operate();
  3. }
  1. public class ConcreteComponent extends Component{
  2. @Override
  3. public void operate() {
  4. System.out.println("ConcreteComponent operate");
  5. }
  6. }
public abstract class Decorator extends Component{

    private Component component;

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

    @Override
    public void operate() {
        this.component.operate();
    }
}
public class ConcreteDecoratorA extends Decorator{
    public ConcreteDecoratorA(Component component) {
        super(component);
    }

    @Override
    public void operate() {
        super.operate();
        System.out.println("ConcreteDecoratorA operate");
    }
}