【问题标题】:Decorator pattern, Head First Design Patterns装饰者模式,头部优先设计模式
【发布时间】:2015-04-25 15:44:01
【问题描述】:

我正在阅读Head First Design Patterns 的书。在第 3 章(“装饰对象:装饰器模式”)中,我不明白这部分:

“这对某些人来说不是很容易吗? 饮料的客户最终得到 不是最外层的装饰器 装饰师?就像我有一个 DarkRoast 摩卡、大豆和鞭子,这很容易 编写以某种方式结束的代码 提到大豆而不是鞭子, 这意味着它不会包含 Whip 顺序。”

有人可以帮我理解本节的要点吗?作者要解决的主要问题是什么?

【问题讨论】:

  • 这是一个非常糟糕的解释。忽略它。装饰器只是一个包装器 - 这就是它的全部内容。

标签: decorator


【解决方案1】:

我认为他们想要指出的是,如果您不小心创建装饰对象的位置和方式,您可能会混淆您的引用。考虑第 98 页上的示例(2004 年的第一版)。

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

如果您在这些创作步骤之间做一些事情,您最终可能会得到没有 Whip 的摩卡。

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

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

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

【讨论】:

  • 您能否举例说明“在两者之间做事”是什么意思? (第二版 / 10 周年纪念版的示例现在在第 100 页)
猜你喜欢
  • 1970-01-01
  • 2012-03-10
  • 2010-10-05
  • 1970-01-01
  • 2015-05-19
  • 2013-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多