与仅使用构造函数创建对象相比,内存和性能使用情况如何?
这里的用法是创建一个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。
答案 0 :(得分:7)
您有另外的Builder对象,在创建对象后会被丢弃。因此,您可能会对内存使用和速度产生一些影响。但是Java-VM确实非常强大,特别是Server-VM(java -server),因此VM可以完全优化构建器。所以我的建议是你应该衡量真正的影响(如果你关心表现,一如既往),并确定影响是否太大。
答案 1 :(得分:3)
从您的初始描述中很难说出来,但如果您担心将Collection<Object>
传递给构造函数与构建函数的百万条,那么另外一个(短期)对象的成本是几乎不值得讨论。
答案 2 :(得分:1)
成本可以忽略不计,因为构建对象后可以立即对构建器引用进行垃圾回收。
在任何情况下,创建1m额外物体的影响应低于10s。