除了这些类之外, 还有调味品:
问题是调味品太多了, 如果使用继承来做的话, 各种组合简直是类的爆炸.
而且还有其他的问题, 如果牛奶的价格上涨了怎么办? 如果再加一种焦糖调料呢?...下面就是:
看起来不错, 那么, 问题来了:
调味料价格变化的话就不得不修改现有代码了
如果有新的调味料那么久必须在父类里面添加新的方法, 并且修改cost方法了....这里需要注意的是, 装饰器和咖啡都继承于同一个父类只是因为需要它们的类型匹配而已, 并不是要继承行为.
.NET Core 代码实现
Beverage:
namespace DecoratorPattern.Core...Stream的结构
.NET Core里面的Stream主要是三个概念: 存储(backing stores 我不知道怎么翻译比较好), 装饰器, 适配器.
backing stores是让输入和输出发挥作用的端点...Stream通过Synchronized方法来解决这个问题. 该方法接受stream为参数, 返回一个线程安全的包装结果.