方位磁針 :
複合キー、芥屋と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:
これは、複数のオブジェクトを作成するために、同じビルダーを使用することが常に適切です。結局のところ、それはビルド対象に、ビルダーの基本的な目的です。
あなたはビルダーを使用する方法が完全に許容可能です。