装饰者模式

代码详解:【设计模式】Java 设计模式之装饰者模式(Decorator)_java 装饰者模式-CSDN博客

java 复制代码
// 抽象构件角色
public interface Component {
    void operation();
}

// 具体构件角色
public class ConcreteComponent implements Component {
    @Override
    public void operation() {
        System.out.println("执行具体构件对象的操作");
    }
}

// 装饰角色
public class Decorator implements Component {
    protected Component component;

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

    @Override
    public void operation() {
        if (component != null) {
            component.operation();
        }
    }
}

// 具体装饰角色A
public class ConcreteDecoratorA extends Decorator {
    public ConcreteDecoratorA(Component component) {
        super(component);
    }

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

    public void addedFunctionA() {
        System.out.println("为构件对象添加功能A");
    }
}

// 具体装饰角色B
public class ConcreteDecoratorB extends Decorator {
    public ConcreteDecoratorB(Component component) {
        super(component);
    }

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

    public void addedFunctionB() {
        System.out.println("为构件对象添加功能B");
    }
}

装者模式的应用:

-mybatis 里的缓存:

相关推荐
凤山老林11 小时前
新一代Java应用日志可视化与监控系统开源啦
java·后端·开源
流星白龙11 小时前
【Qt】7.信号和槽_connect函数用法(2)
java·数据库·qt
黎宇幻生15 小时前
Java全栈学习笔记39
java·笔记·学习
Aurorar0rua15 小时前
C Primer Plus Notes 09
java·c语言·算法
nongcunqq16 小时前
abap 操作 excel
java·数据库·excel
史迪奇_xxx17 小时前
10、一个简易 vector:C++ 模板与 STL
java·开发语言·c++
2301_8012522217 小时前
Java中的反射
java·开发语言
遇印记18 小时前
大二java学习笔记:二维数组
java·笔记·学习
小杨同学yx18 小时前
有关maven的一些知识点
java·开发语言
小韩博19 小时前
IDEA的简单使用
java·ide·intellij-idea