与仅使用构造函数创建对象相比,内存和性能使用情况如何?
这里的用法是创建一个Set<Object>
或List<Object>
可能包含数百万以上的条目,我担心使用 Bloch 的 Builder 模式的开销。我过去曾使用过它,但从未在这么大的范围内使用过。
参考:第 2 项:在面对许多构造函数参数时考虑构建器,转载于创建和销毁 Java 对象:第 1 部分,摘自Joshua Bloch 的Effective Java Second Edition。
与仅使用构造函数创建对象相比,内存和性能使用情况如何?
这里的用法是创建一个Set<Object>
或List<Object>
可能包含数百万以上的条目,我担心使用 Bloch 的 Builder 模式的开销。我过去曾使用过它,但从未在这么大的范围内使用过。
参考:第 2 项:在面对许多构造函数参数时考虑构建器,转载于创建和销毁 Java 对象:第 1 部分,摘自Joshua Bloch 的Effective Java Second Edition。
您有额外的 Builder-object,它在创建对象后被丢弃。所以你可能会对内存使用和速度产生一些影响。但是Java-VM确实优化得很厉害,尤其是Server-VM(java -server),所以VM可以完全优化掉builder。所以我的建议是你应该衡量真正的影响(如果你关心性能的话)并确定影响是否太大。
从您最初的描述中很难分辨,但是如果您担心将Collection<Object>
具有约百万个条目的 a 传递给构造函数而不是传递给 Builder,那么一个额外(短期)对象的成本几乎不值得讨论。
成本可以忽略不计,因为可以在构建对象后立即对构建器引用进行垃圾收集。
在任何情况下,创建 1m 额外对象的影响应该在 10s 以下。