4

私は25のフィールドを持つエンティティを持っています。ロジックはなく、値を格納するだけです。抽象ビルダーでビルドします。ビルド後にこのエンティティを変更したくありません。すべてのフィールドを最終的なものにしたいのですが、25-params コンストラクターを作成したくありません。この場合、どのパターンを使用する必要がありますか? 今、パッケージローカルセッターについて考えていますが、最終フィールドに設定されているすべての値の構文チェックよりも悪いです。このフィールドを 2 ~ 3 個のオブジェクトにまとめることができません

4

2 に答える 2

9

3 つの主なオプションがあります。

  1. ビルダーだけが知っているプラ​​イベート クラスと、ゲッターのみを持つパブリック インターフェイスを用意します。ビルダーは、クラスではなくインターフェイスを使用して参照を提供します。

  2. 2 つのクラスを用意します。1 つは可変 (メッセンジャー クラスのようなもの) で、もう 1 つは不変で、コンストラクターで可変クラスを受け入れ、そのフィールドを取得します。

  3. クラスのすべてのフィールドに適切なデフォルト値を設定し、そのフィールド セットを持つクラスの新しいインスタンスを返すセッターを設定します。ここでの欠点は、25 フィールドのインスタンスを構築するために、変更する必要がある合理的なデフォルトの数に応じて、最大 24 個の使い捨てオブジェクトを作成することになります。;-)

于 2013-09-17T17:25:09.817 に答える