【发布时间】: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 的更多详细信息。