【发布时间】:2015-10-02 13:44:08
【问题描述】:
根据《Design Patterns: Elements of Reusable Object-Oriented Software》一书,:
构建器模式将复杂对象的构造与其表示分离,以便相同的构造过程可以创建不同的表示。
一般来说,构建器模式通过提供一种逐步构建对象的方法并提供一种实际返回最终对象的方法来解决大量可选参数和状态不一致的问题。
通过构建器模式,我们可以使用构建方法来生成不可变的对象。
我的问题:
我可以使用构建器模式在生成对象的类中保留设置方法,从而允许对构建的对象进行变异吗?
如果我要生成可变对象,我不应该使用构建器模式吗?
【问题讨论】:
-
您要解决的实际问题是什么?您是在问a raptor will eat you 是否编写了一个构建可变对象的 Builder,还是有其他原因让您担心?
-
@DanielPryden 在工作中我发现了这个模式的实现,但是它允许修改构建的对象,所以如果这个动作打破了这个模式的建议之一,我就会自我介绍,即构建一个不可变对象。
-
当然。构建的对象甚至可以具有可链接的设置器,因此您可以这样做
obj.setA(..).setB(..)...构建器本身就是这样的可变对象。
标签: java design-patterns constructor immutability builder