【设计模式】- 装饰器模式

173 阅读1分钟

定义:装饰器模式又称包装模式。指在不改变对象原有功能的前提下,将功能附加到对象上。相对于继承实现拓展,装饰其模式能实现动态拓展。

/**
 * 抽象类
 */
public abstract class Component{
    public abstract void doOperation();
}

/**
 * 装饰器
 */
public abstract class Decorator extends Component{
    private Component component;
    public Decorator(Component component){
        this.component=component;
    }
    @Override
    public void doOperation(){
        this.component.doOperation();
    }
}

/**
 * 原始对象示例
 */
public class SampleDecorator extends Component{
    @Override
    public void doOperation() {
        System.out.println("original operation");
    }
}
/**
 * 装饰器A
 */
public class DecoratorA extends Decorator {
    public DecoratorA(Component compontent) {
        super(compontent);
    }
    public void customOperationA(){
        System.out.println("decortorA operation");
    }
    @Override
    public void doOperation() {
        customOperationA();
        super.doOperation();
    }
}

/**
 * 装饰器B
 */
public class DecoratorB extends Decorator {
    public DecoratorB(Component compontent) {
        super(compontent);
    }
    public void customOperationB(){
        System.out.println("decortorB operation");
    }
    @Override
    public void doOperation() {
        customOperationB();
        super.doOperation();
    }
}

调用示例

    public static void main(String[] args) {
        Component component=new SampleDecorator();
        // 按需添加拓展功能
        Decorator decoratorA=new DecoratorA(component);
        Decorator decoratorB=new DecoratorB(decoratorA);
        decoratorB.doOperation();
    }

公众号,喜欢点点关注!

公众号.jpg