我正在阅读第一个设计模式书,装饰部分。我无法理解本书的一部分:
“对某些人来说不是一件容易的事 最终的饮料客户 一个不是最外面的装饰者 设计师吗?就像我有一个DarkRoast一样 摩卡,大豆和鞭子,这很容易 编写以某种方式结束的代码 提到大豆而不是鞭子, 这意味着它不会包含鞭子 订单。“
任何团体都可以帮助我理解本节的主题吗? 头首先提到它的问题是什么? 谢谢
答案 0 :(得分:1)
我认为他们想要指出的是,如果您不小心在何处以及如何创建装饰对象,您可以将您的引用混淆。请考虑第98页上的示例(2004年第一版)。
Beverage beverage3 = new HouseBlend();
beverage3 = new Soy(beverage3);
beverage3 = new Mocha(beverage3);
beverage3 = new Whip(beverage3);
如果你想在这些创作步骤之间做些什么,你最终可能会得到一个没有鞭子的摩卡。
就像他们在答案部分写的那样:
但是,装饰器通常是使用Factory和Builder之类的其他模式创建的。
如果您自动创建对象,则可能会阻止您发生参考错误。