gpt4 book ai didi

java - 创建具有相同值的多个对象时重用构建器实例是否可以接受?

转载 作者:行者123 更新时间:2023-12-02 10:50:59 24 4
gpt4 key购买 nike

考虑以下具有复合键、keyA 和 keyB、一些值以及 lombok 构建器注释的 POJO。

@Builder
class Foo {
int keyA;
int keyB;
String author;
String value;

... other stuff

}

使用传统的构建器范例,您只需将所有构建器元素链接在一起。

List<Foo> list = new ArrayList<>();
list.add(Foo.builder().keyA(1234).keyB(1).author("Bob Jones").value(...).build());
list.add(Foo.builder().keyA(1234).keyB(3).author("Bob Jones").value(...).build());
list.add(Foo.builder().keyA(1234).keyB(4).author("Bob Jones").value(...).build());
list.add(Foo.builder().keyA(1234).keyB(5).author("Bob Jones").value(...).build());
list.add(Foo.builder().keyA(1234).keyB(7).author("Bob Jones").value(...).build());

相反,我可以将构建器保存为变量并重用它,仅覆盖某些值。

List<Foo> list = new ArrayList<>();
Foo.FooBuilder builder = Foo.builder().keyA(1234).author("Bob Jones");

list.add(builder.keyB(1).value(...).build());
list.add(builder.keyB(3).value(...).build());
list.add(builder.keyB(4).value(...).build());
list.add(builder.keyB(5).value(...).build());
list.add(builder.keyB(7).value(...).build());

每次构建调用之间都会覆盖构建器值,并在 build() 上创建一个新对象。

现在,这些行在复杂性上并没有太大的不同,但是随着创建更大的对象,并且其中许多对象的预设值保持一致,代码变得非常难以管理,因为如果每个构建器语句都必须更新,则必须更新每个构建器语句。他们需要进行基础更改。

假设您只传递引用和更新值,这是构建器范例的适当使用,还是构建器范例的概念严格来说是一个构建器生成一个对象?

最佳答案

使用同一个构建器来创建多个对象总是合适的。毕竟,构建对象就是构建器的基本目的。

您使用构建器的方式是完全可以接受的。

关于java - 创建具有相同值的多个对象时重用构建器实例是否可以接受?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59992540/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com