设计模式 | 装饰模式

105 阅读1分钟

定义

动态地给一个对象添加一些额外的职责。

使用场景

需要透明且动态地扩展类的功能。

Java 代码示例

public abstract class Component {
    public abstract void operate();
}

public class ConcreteComponent extends Component {
    @Override
    public void operate() {
    }
}

public abstract class Decorator extends Component {
    private Component mComponent;

    public Decorator(Component component) {
        mComponent = component;
    }

    @Override
    public void operate() {
        mComponent.operate();
    }
}

public class Decorator1 extends Decorator {
    public Decorator1(Component component) {
        super(component);
    }

    @Override
    public void operate() {
        super.operate();
        operateA();
        operateB();
    }

    public void operateA() {
    }

    public void operateB() {
    }
}

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

        Decorator decorator = new Decorator1(component);
        decorator.operate();
    }
}