Bean プロパティの getter メソッド内にロジックを記述しなければならなかった他のプロパティを操作して、Java Bean プロパティに値を割り当てようとしています。設計の観点からそうするのは正しいですか?
2 に答える
ゲッター/セッターが値を単純にミラーリングする場合、値を保持したり、値を非公開にしたりする意味はありません。正当な理由があれば、一部のメンバー変数を公開しても問題はありません。3D ポイント クラスを作成している場合、.x、.y、.z を public にすることは完全に理にかなっています。
ゲッター/セッターは、副作用が発生する可能性がある場合、他の内部変数を更新する必要がある場合、キャッシュされた値を再計算する必要がある場合、および無効な入力からクラスを保護する場合に役立ちます。
内部構造を隠すという彼らの通常の正当化は、一般的に最も役に立たない. 例えば。これらのポイントを 3 つの float として保存しています。リモート データベースに文字列として保存することも考えられるので、getter/setter を作成してそれらを非表示にします。呼び出し元のコードに他の影響を与えずにそれを行うことができるかのように。
OOpの基本原則はカプセル化と情報隠蔽だと思います。
プロパティの取得または設定に関連する動作のカプセル化 - これにより、追加機能 (検証など) を後で簡単に追加できます。
代替表現を使用してプロパティを公開しながら、プロパティの内部表現を非表示にする
したがって、セッターとゲッター内に検証ロジックを書くことは問題ありません...