装饰者模式,先头

时间:2015-04-25 15:44:02

标签: decorator

我正在阅读第一个设计模式书,装饰部分。我无法理解本书的一部分:

“对某些人来说不是一件容易的事 最终的饮料客户 一个不是最外面的装饰者 设计师吗?就像我有一个DarkRoast一样 摩卡,大豆和鞭子,这很容易 编写以某种方式结束的代码 提到大豆而不是鞭子, 这意味着它不会包含鞭子 订单。“

任何团体都可以帮助我理解本节的主题吗?  头首先提到它的问题是什么?  谢谢

1 个答案:

答案 0 :(得分:1)

我认为他们想要指出的是,如果您不小心在何处以及如何创建装饰对象,您可以将您的引用混淆。请考虑第98页上的示例(2004年第一版)。

Beverage beverage3 = new HouseBlend();
beverage3 = new Soy(beverage3);
beverage3 = new Mocha(beverage3);
beverage3 = new Whip(beverage3);

如果你想在这些创作步骤之间做些什么,你最终可能会得到一个没有鞭子的摩卡。

就像他们在答案部分写的那样:

  

但是,装饰器通常是使用Factory和Builder之类的其他模式创建的。

如果您自动创建对象,则可能会阻止您发生参考错误。