这里需要注意的是, 装饰器和咖啡都继承于同一个父类只是因为需要它们的类型匹配而已, 并不是要继承行为.
.NET Core 代码实现
Beverage:
namespace DecoratorPattern.Core...Stream的结构
.NET Core里面的Stream主要是三个概念: 存储(backing stores 我不知道怎么翻译比较好), 装饰器, 适配器.
backing stores是让输入和输出发挥作用的端点...于是, stream可以用比较小的固定大小的内存来处理无论多大的backing store.
中间的那部分就是装饰器Stream. 它符合装饰模式....可以查询和修改可寻址的stream(例如文件stream)的长度, 也可以随时修改读取和写入的位置.
Position属性就是所需要的, 它是相对于stream开始位置的....关闭BufferedStream就会关闭底层的backing store stream..
先写到这里, 略微有点跑题了, 但是.NET Core的Stream这部分没写完, 另开一篇文章再写吧.