【问题标题】:GoF's implementation of Builder vs Bloch'sGoF 的 Builder 与 Bloch 的实现
【发布时间】:2018-05-07 04:26:16
【问题描述】:

我正在尝试了解 Builder Pattern 的用法并将其用法类型分组。这是我的发现:

  • Builder 可用于为其正在构建的对象提供不变性(避免伸缩)。所谓的约书亚布洛赫的建造者。因此,我们使用 builder 来帮助构建具有大量字段的对象。

  • Builder 可以构建一些需要结构化的对象,并遵循一些结构化规则。例如 XmlBuilder,它构建 xml 并在传递错误数据时可能会失败(例如,不关闭标签等)。在这种情况下,构建器会在每个构建步骤中验证内部对象。

但是 GoF 的构建器呢?使用 Director、抽象生成器和不同的实现......我从未在生产中看到过这样的实现。 Bloch的builder和GoF的builder是什么关系?他们真的有关系吗?有什么区别?

【问题讨论】:

  • 郑重声明:我认为你的问题是偏离主题的“边界线”。
  • Josh Bloch 表示他的模式“是来自 GoF 的 Builder 模式的一种形式”。就个人而言,我没有看到很多相似之处。 Bloch 的模式更为流行,通常是人们在讨论 Builder 时所指的。我从未在野外见过规范的 GoF 实现。
  • 查看@Fuhrmanator 的评论和回答,了解有关 GoF Builder 的更多详细信息。

标签: design-patterns builder


【解决方案1】:

我认为 Bloch 的构建器模式和 GoF 的构建器模式是两种不同的模式。我在一些培训中看到,布洛赫的构建器模式被称为汇编器模式。但我建议不要费心寻找相似之处,而只是将其视为命名混乱,并始终准确说明您的意思是哪种构建器模式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-17
    • 2014-01-29
    相关资源
    最近更新 更多