2

タイトル通り、読ん<Effective Java>でいますが、chapter2を読むと、

4

2 に答える 2

2

オブジェクトがimmutableである場合、オブジェクト (JavaBeans など) がmutableである場合よりも心配する必要はありません。不変オブジェクトを取得すると、基本的にスレッド同期の問題の影響を受けず、防御的なコピーを作成せずに自由に渡すことができます (ユーザーまたは善意のライブラリ メソッドがデータを変更するのを防ぐため)。

当然のことながら、変更可能なオブジェクトを作成するのは難しい場合があり、コンストラクターが長すぎて管理できない場合があります。ここで Builder パターンが役立ちます。変更可能な Builder を使用して初期状態を作成し、それをそのオブジェクトのコンストラクター内の不変オブジェクトにコピーします。

不変オブジェクトに可変オブジェクトへの参照が含まれている場合、外部オブジェクトは実際には不変ではないことに注意してください。GuavaImmutableListには、ImmutableMap、およびImmutableSet便利なものが見つかるかもしれません。

于 2012-11-02T02:46:39.743 に答える
0

Builder はすべてのBuilderパラメーターをコンストラクターに渡す前に検証できるため、パターンはより安全です。

これには GoogleがPreconditions便利です。

言うまでもなく、ビルダーを使用すると、複雑なオブジェクトの構築が非常に簡潔になります。

ビルダーパターンに従うオブジェクトは、多かれ少なかれ変更可能であるとは言いませimmutableJavaBean。フィールドの宣言方法と公開するメソッドによって異なります。

于 2012-11-02T04:07:14.870 に答える