使用Bloch的Builder Pattern是否会记忆和性能?

时间:2010-03-15 16:00:23

标签: java design-patterns memory performance builder

与仅使用构造函数创建对象相比,内存和性能使用情况如何?

这里的用法是创建一个Set<Object>List<Object>,其中可能包含数百万个条目,我担心使用Bloch的Builder模式的开销。我过去曾经使用它,但从未在这么大的范围内使用它。

参考:Item 2: Consider a builder when faced with many constructor parameters,在Creating and Destroying Java Objects: Part 1中重印,摘自约书亚布洛赫Effective Java Second Edition

3 个答案:

答案 0 :(得分:7)

您有另外的Builder对象,在创建对象后会被丢弃。因此,您可能会对内存使用和速度产生一些影响。但是Java-VM确实非常强大,特别是Server-VM(java -server),因此VM可以完全优化构建器。所以我的建议是你应该衡量真正的影响(如果你关心表现,一如既往),并确定影响是否太大。

答案 1 :(得分:3)

从您的初始描述中很难说出来,但如果您担心将Collection<Object>传递给构造函数与构建函数的百万条,那么另外一个(短期)对象的成本是几乎不值得讨论。

答案 2 :(得分:1)

成本可以忽略不计,因为构建对象后可以立即对构建器引用进行垃圾回收。

在任何情况下,创建1m额外物体的影响应低于10s。