当前位置: 首页 > article >正文

装饰器模式decorator

学习笔记,原文链接
https://refactoringguru.cn/design-patterns/decorator

将对象放入包含行为的特殊封装对象中来为原对象绑定新的行为

在这里插入图片描述

在这里插入图片描述

调用过程

当你调用 encoded.writeData(salaryRecords); 时,控制流首先进入 CompressionDecorator 的 writeData 方法。

在 CompressionDecorator 的 writeData 方法中,调用 super.writeData(compressedData);。这意味着调用的是 DataSourceDecorator 的 writeData 方法。

在 DataSourceDecorator 的 writeData 方法中,执行 wrappee.writeData(data);,这里的 wrappee 是 EncryptionDecorator 的实例。

控制流转到 EncryptionDecorator 的 writeData 方法:

EncryptionDecorator 的 writeData 方法将加密后的数据传递给它的父类 DataSourceDecorator。

最后,在 DataSourceDecorator 中,调用 wrappee.writeData(encryptedData);,这里的 wrappee 是 FileDataSource 的实例,最终将加密后的数据写入文件。

总结


![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/b066595e4cee480bad7f867318ffedf5.png)



http://www.kler.cn/news/302895.html

相关文章:

  • 3. 轴指令(omron 机器自动化控制器)——>MC_HomeWithParameterMC_Move
  • 怎么给DataX的Json配置文件传参
  • java后端请求调用三方接口
  • 【Hot100】LeetCode—763. 划分字母区间
  • C++战列舰小游戏Lv. 1.4版本(半成品)
  • 【STM32实物】基于STM32设计的18650锂电池电量(电压/电流)检测系统——采用电阻分压法、均值滤波及ADC测量—文末工程资料下载
  • 在Linux中从视频流截取图片帧(ffmpeg )
  • 西门子1200/1500PLC什么时候需要设置网关地址
  • TCP全连接队列和tcpdump抓包
  • MinIO【部署 02】Linux集群版本及Windows单机版、单机多目录版、分布式版(cmd启动脚本及winsw脚本分享)
  • 模版方法模式template method
  • CMU 10423 Generative AI:lec3(Learning Large Language Models)
  • vim 安装与配置教程(详细教程)
  • Linux学习-Ansible(二)
  • 解码企业数字化转型的四大核心促因
  • 数据结构加餐:三路划分、自省排序、文件归并排序
  • vue3 使用swiper制作带缩略图的轮播图
  • 视频笔记1
  • Winform实现弹出定时框功能
  • HarmonyOS开发之(下拉刷新,上拉加载)控件pulltorefresh组件的使用
  • 汽车材料展︱2025 广州国际汽车轻量化技术及车用材料展览会
  • 用Qt 对接‌百度语音识别接口
  • 如何使用studio layout inspector
  • 工具、环境等其他小问题归纳
  • uniapp对tabbar封装,简单好用
  • Unity3d中制作触发区域为圆形的按钮
  • YOLOv5-6.x源码分析----数据集创建之dataloaders.py
  • 【Python 千题 —— 算法篇】寻找最长回文子串
  • JavaWeb【day11】--(SpringBootWeb案例)
  • Android APK插件化:DynamicAPK技术如何改变游戏规则