学习笔记,原文链接
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)