装饰器模式decorator

news/2024/9/17 8:40:14/ 标签: 装饰器模式

学习笔记,原文链接
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.ppmy.cn/news/1521887.html

相关文章

3、C++常用宏

这是C的一些常用宏,常用于调试和错误信息的输出。 __FILE__ // 当前源文件的文件名。 __LINE__ // 当前源文件中的行号 __DATE__ // 编译当前源文件的日期(格式:MMM DD YYYY) __TIME__ // 编译当前源文件的时…

JVM——Java虚拟机内存初识(面经篇之JVM内存)

网上说的太详细了,真不利于我的初识和记忆, 例如:堆区的young, old,讲了一大堆,结果,我连这些区域是干什么的都不知道,存储什么的都不知道, 害得是我自己总结: 堆&#x…

Facebook的AI进化:如何用智能技术提升内容推荐

在数字时代,社交媒体平台不仅是信息传播的重要渠道,也是个人和品牌互动的关键平台。Facebook作为全球领先的社交媒体网络,其内容推荐系统的优化在很大程度上提升了用户体验。本文将探讨Facebook如何通过人工智能(AI)技…

使用Fign进行客户端远程调用和SpringFormEncoder的使用

1、引入依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> 2、启动类加上注解 EnableFeignClients SpringBootApplication public class FeignTe…

Ansible 自动化运维项目

在现代 IT 运维中&#xff0c;自动化正在成为提升效率和可靠性的关键工具。Ansible 作为一种流行的自动化工具&#xff0c;因其简单易用和强大的功能&#xff0c;被广泛应用于配置管理、部署、持续集成等领域。本文将通过一个实际的 Ansible 项目案例&#xff0c;来介绍如何使用…

Flask中实现上下文管理

在Flask中&#xff0c;上下文管理是通过Flask框架内部机制自动管理的&#xff0c;但你也可以通过Flask提供的API来显式地操作上下文。Flask使用_request_ctx_stack和_app_ctx_stack这两个本地栈&#xff08;local stacks&#xff09;来分别管理请求上下文和应用上下文的入栈&am…

P1166 打保龄球

共可以投 1 局 一局10轮 在一局中&#xff0c;一共有十个柱&#xff0c;会出现很多种情况。 第1次把10个 打倒全部 >> 分数10后2次得分 --若是第10轮则还需另加两次滚球&#xff1b; 没全部打倒 >> 第2次把剩下的 打倒 >&g…

MFC生成dll的区别

主要分三种&#xff1a; A. 动态链接库(dll) B.具有导出项的(dll)动态链接库 C.MFC动态链接库 对比项目&#xff1a;可以根据需要选择哪种dll方便 添加自定义导出功能Demo 1. 添加导出实现接口&#xff1a; A. 导出需要具有&#xff1a;__declspec(dllexport) B. 按照C语言…

Unity6 + UE5.4 PSO缓存实践记录

题图&#xff08;取自COD冷战的着色器编译提示&#xff09; PSO&#xff08;管线状态对象 Pipeline State Object&#xff09;是伴随现代图形API&#xff08;DirectX12、Vulkan、Metal&#xff09;而出现的概念&#xff0c;它本质上是单次绘制时渲染管线所处的状态信息的集合&…

Java实用类——操作日期和时间

Date类&#xff1a; Date 位于java.util.Date类&#xff1a;表示日期和时间SimpleDateFormat 位于java.text.SimpleDateFormat类&#xff1a;格式化日期类parse方法&#xff1a;将字符串转为日期类型 public static void main(String[] args) throws ParseException {//获得当…

Unity Adressables 使用说明(五)在运行时使用 Addressables(Use Addressables at Runtime)

一旦你将 Addressable assets 组织到 groups 并构建到 AssetBundles 中&#xff0c;就需要在运行时加载、实例化和释放它们。 Addressables 使用引用计数系统来确保 assets 只在需要时保留在内存中。 Addressables 初始化 Addressables 系统在运行时第一次加载 Addressable …

oracle事务隔离级别

文章目录 数据库事务概况1.事务相关概念2.事务的四个特性ACID : oracle事务隔离级别1 .两个事务并发访问数据库数据时可能存在的问题 数据库事务概况 一组SQL,一个逻辑工作单位&#xff0c;执行时整体修改或者整体回退。 1.事务相关概念 1&#xff09;事务的提交和回滚&…

MongoDB-聚合查询操作介绍

目录 前言db.collection.aggregate()db.collection.aggregate()示例一db.collection.aggregate()示例二 复杂的聚合操作通过mongoimport导入测试数据复杂的聚合操作示例聚合操作的偏好设置-project函数聚合操作的偏好设置-unwind函数 前言 MongoDB聚合操作相当于关系型数据库S…

MATLAB基础应用精讲-【数模应用】Poisson检验(附MATLAB、python和R语言代码实现)

目录 几个高频面试题目 泊松分布的现实意义是什么,为什么现实生活多数服从于泊松分布? 算法原理 数学模型 参数估计与假设检验 (一) 参数估计 (二) 回归系数的假设检验 (三) 拟合优度检验 适用条件 SPSSPRO 1、作用 2、输入输出描述 3、案例示例 4、案例数据 …

区块链技术介绍

一.概述 1.什么是区块链&#xff1f; 区块链是一种分布式数据库技术&#xff0c;它以链式数据结构的形式存储数据&#xff0c;每个数据块与前一个数据块相关联&#xff0c;形成了一个不断增长的数据链。每个数据块中包含了一定数量的交易信息或其他数据&#xff0c;这些数据经…

Python可视化集大成之作 - Seaborn 介绍

我今天要介绍一款让你在数据可视化中游刃有余的利器——Seaborn包。作为Python数据可视化库中的一员&#xff0c;Seaborn不仅美观易用&#xff0c;而且功能丰富&#xff0c;是生物信息学中数据探索的好帮手。 为什么选择Seaborn&#xff1f; 1. 美观简洁 Seaborn的默认主题和颜…

遍历有向网格链路实现

在实际的业务中&#xff0c;我们可能遇到复杂规则&#xff08;多个或与条件组合&#xff09;&#xff0c;复杂链路等类似场景问题&#xff0c;如&#xff1a;规则引擎相关业务&#xff0c;生产任务排期等。 复杂链路示意图如下&#xff1a; 复杂网路链路场景描述 有一个或多…

单片机学习笔记

一、单片机帝国的诞生与发展 1.1 单片机的基本概念 单片机是一种集成电路芯片&#xff0c;采用超大规模的集成电路把具有数据处理功能的中央处理器存储器、输入输出端口、外围电路和相关外设集成在一块硅片上构成一个小而完整的微型计算机系统。 一般而言&#xff0c;单片机也…

光电振荡器行业研究:未来几年年复合增长率CAGR为16.0%

光电振荡器(OEO)是一种微波光子系统&#xff0c;它使用高品质因数的光能量存储元件产生具有超低相位噪声的微波信号。光电振荡器基于将来自泵浦激光器的连续光能转换为射频(RF)、微波或毫米波信号。OEO 的特点是具有非常高的品质因数(Q) 和稳定性&#xff0c;以及电子振荡器不容…

K8s中如何使用etcd进行集群信息的备份与恢复

这里写目录标题 ETCD是什么?1. **`etcd`(服务)**2. **`etcdctl`(客户端工具)**如何安装etcdctl(客户端工具)查看目前K8s自带etcd中的版本信息安装对应版本的etcdutl工具下载 `etcdutl` 3.5.7 版本配置环境变量创建备份文件验证一下备份的快照文件备份文件恢复的效果演示…