从FLC中学习的设计模式系列-结构型模式(2)-装饰
装饰模式是通过包装类动态地往一个类中添加新的行为
装饰模式
http://zh.wikipedia.org/wiki/修饰模式
通过使用修饰模式,可以在运行时扩充一个类的功能。原理是:增加一个修饰类包裹原来的类,包裹的方式一般是通过在将原来的对象作为修饰类的构造函数的参数。装饰类实现新的功能,但是,在不需要用到新功能的地方,它可以直接调用原来的类中的方法。修饰类必须和原来的类有相同的接口。
修饰模式是类继承的另外一种选择。类继承在编译时候增加行为,而装饰模式是在运行时增加行为。
FCL中的装饰模式
在流处理中装饰模式非常常用,典型的就是GZipStream
提供用于压缩和解压缩流的方法和属性。
结构如下:
其中GZipStream 既继承了Stream 又组合了Stream ,相当于一个包装,并在这个包装上提供了压缩等方法。
1 2 3 4 5 6 7 8 9 10 | using (FileStream outFile = File.Create(fi.FullName + ".gz" )) { using (GZipStream Compress = new GZipStream(outFile,CompressionMode.Compress)) { // 写入.Compress 流 inFile.CopyTo(Compress); } } |
分类:
设计模式
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架