、著者はビルダーを使用しているパラメータに不変条件を課すことについては、次の点に言及:ビルダーパターンの検証 - 効果的なJavaの(第2版)の項目2に有効ジャワ
彼らがコピーした後にチェックすることが重要ですビルダーからオブジェクトへのパラメータ、およびビルダフィールド(アイテム39)ではなくオブジェクトフィールドでチェックされていることを確認します。何らかの不変量が違反した場合、ビルドメソッドはIllegalStateExceptionをスローする必要があります(Item 60)。
これは、ビルドメソッドがターゲットオブジェクトを作成した後、必要な検証のために検証ルーチンに渡す必要があることを意味しますか?
また、誰かがこの背後にある理由を説明できますか?
オブジェクトにコピーされた後にビルダーフィールドが変更される可能性があります。つまり、ビルダーは「有効」オブジェクトを作成する状態に置くことができます。 「無効な」オブジェクトが作成されていました。 –
申し訳ありませんが、これを正しく理解すればわかりません。ビルダーは、新しい .Builder.setter1()。setter2。()。build()という名前で作成されます。どのように他のスレッドがこの特定のBuilderオブジェクトの参照を取得することができますか? –
その場合、それはできませんでした。しかし、一般にスレッド間で共有されるビルダーインスタンスを停止するものは何もありません。 –