Java常见技术分享-10-装饰器模式

什么是装饰器模式?

装饰器模式 的应用场景 是 在不改变原有对象 的 基础上, 动态的给他添加一些额外的功能。 他主要有四个核心的组件。

第一个是抽象组件, 定义了被修饰的对象和装饰器的共同接口。

第二个是具体组件, 就是你需要装饰的原始对象。

第三个是抽象装饰器, 他继承或实现了 抽象组件,内部有一个抽象组件的引用。

第四个是具体装饰器, 负责给原始对象添加具体额外的功能。

在SpringBoot中有具体的案例吗?

有的, 比较典型的案例就是读取文件的 FileInputStream 被装饰对象。

他实现了InputStream 的读字节方法。

然后抽象装饰器则是 FilterInputStream 。 相关的具体装饰器有BufferedInputStream , 他的作用是会把数据读取到自己的缓冲区, 等你需要的时候 ,从缓冲区中读取数据, 而不是每次都去访问文件, 这样就提高了效率。

还有DataInputStream, 他能将 字节转换成不同的类型。

然后再使用上, 主要分为两个核心的部分, 一个是抽象组件实例构建的时候,

首先我们会先创建FileInputStream的对象 。然后 创建BufferedInputStream对象时, 把InputStream 抽象组件的引用 ,即FileInputStream的对象 放进去。 这样 调用BufferedInputStream 的读方法 , BufferedInputStream就可以在内部给FileInputStream的读方法新增功能。然后在创建 DataInputStream对象时, 把InputStream 抽象组件的引用 ,即BufferedInputStream的对象 放进去。 这样我们在@Configuration配置 返回InputStream的Bean时 , 把DataInputStream对象返回回去, 当业务方在调用InputStream的实例的时候, 就会先调用到DataInputStream的功能, 然后 DataInputStream再去调用它持有的InputStream引用, 即BufferedInputStream的功能, 然后同样的BufferedInputStream调用它持有的InputStream引用, 即核心的FileInputStream功能, 这种模式, 能够在不修改FileInputStream的前提下, 新增功能, 后续要新增啥功能, 直接再套一层就好了

相关推荐
重生之小比特1 分钟前
【C++进阶】封装红⿊树实现mymap和myset
开发语言·c++
边境悍匪5 分钟前
蜗牛学苑 Java 智能体学习 Day49|贯穿项目 5 订单下单业务 思维导图复盘
java·开发语言·spring boot·学习·阿里云
鬼手点金8 分钟前
Claude Code示范案例-修复 Bug 工作流
java·服务器·前端·javascript·bug·openclaw
一条破秋裤9 分钟前
Linux 进程通信介绍:内存隔离与 IPC 分类
java·linux·服务器
“AI国潮设计-小江”9 分钟前
【AIGC实战】Python+SDXL打造潮汕国潮IP:英歌舞麻将的自动化生成与商用思路
开发语言·人工智能·python·prompt·aigc
机核研创社20 分钟前
polo 长袖短裤套装自动化产线:八台机器排队接力
android·java·自动化
Roadinforest31 分钟前
Spring Boot 4 六步入门实录:从 Hello World 到一个能交付的 Todo API
java·开发语言·spring boot·spring
半仙白桑32 分钟前
内核篇第十三讲:system-V消息队列
java·linux·网络
今天的砖头有点烫手啊38 分钟前
GC 算法与垃圾收集器演进:从 Serial 到 ZGC
java·jvm
88号技师1 小时前
2026年9月SCI-天气状态蚂蚁优化算法Weather State Ants Optimizer-附Matlab免费代码
开发语言·算法·matlab·优化算法