2015-04-25 52 views
2

我正在读头第一个设计图案书,装饰者部分。我无法理解这本书的一部分:装饰者图案,头先

“那岂不是容易的饮料的一些 客户落得 一个装饰是不是最外层 装饰一样,如果我有一个在DarkRoast与 摩卡,大豆和鞭子,这将很容易 编写的代码,以某种方式结束了 与大豆而不是鞭子, ,这意味着它不包括鞭子在 命令。

任何机构都可以帮助我理解本节的主要内容? 首先提到它的问题是什么? 谢谢

+0

这真是一个糟糕的解释。忽略它。装饰者只是一个包装 - 这就是它的一切。 – alfasin

回答

1

我想他们想指出的是,如果您不小心在哪里以及如何创建装饰物体,可以将参考文献混淆。考虑一下第98页的例子(2004年的第一版)。

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

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

而且,就像他们在回答部分写道:

然而,装饰通常通过使用其他模式,比如工厂和Builder创建。

如果您自动创建对象,它可能会阻止您发生引用错误。

+1

你能举个例子来说明“在两者之间做什么”意味着什么? (第二版/ 10周年纪念版现在是第100页的例子) – hamena314