同じ値を持つ複数のオブジェクトを作成するときにビルダーのインスタンスを再利用することが許容できますか?

方位磁針 :

複合キー、芥屋とKEYB、いくつかの値、およびロンボクビルダーアノテーションで以下の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()

さて、これらの行は、複雑で、あまりにも異なるものではなく、より大きなオブジェクトが作成されますと、それらのそれぞれが必要な場合は、缶詰の値は、それらの多くの間で一致していると、コードはかなり難しく、あなたはすべてのビルダーステートメントを更新する必要があるため管理することになり塩基変化。

あなたが唯一の参照と更新値を渡すと仮定すると、これは、ビルダーのパラダイムを適切に使用され、又はビルダーパラダイムの概念は厳密に1つのビルダー利回り一つのオブジェクトのですか?

ロークシュP:

これは、複数のオブジェクトを作成するために、同じビルダーを使用することが常に適切です。結局のところ、それはビルド対象に、ビルダーの基本的な目的です。

あなたはビルダーを使用する方法が完全に許容可能です。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=6465&siteId=1