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

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

/**
 * 抽象类
 */
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();
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容