Order オブジェクトがあり、Order オブジェクトには、注文した人に関する情報を格納する Person オブジェクトが含まれています。Order オブジェクトにデータを入力するとき、Person オブジェクトにもデータを入力する必要がありますか? または、注文した人にアクセスする必要があるときはいつでも、 order.GetPerson() を呼び出すほうがよいでしょうか。
3 に答える
リソースが問題である場合、Shyju の答えは理にかなっています。そうではなく、注文に関連付けられている人を常に知っている場合は、はい、入力してください。また、オブジェクトをできるだけ頻繁に不変にすることをお勧めします。この場合はおそらく可能です。つまり、コンストラクターを介して人を渡し、変更しないでください。
Chris Sinclair によるコメントが示すように、それはあなたの設計と、Person オブジェクトが必要になる頻度を考慮することになります。Orders をロードするたびに、関連付けられた Person も (表示や計算などのために) 必要な場合は、Person を常にロードして、データベース呼び出しの数を制限するのが理にかなっています。Person データがほとんど必要ない場合は、Person データをレイト バインド/遅延読み込み方式で取得する方が理にかなっています。
この例を考えてみましょう。すべての注文を取得して、グリッドに表示します。ただし、グリッドに入力するときに、注文ごとに個人情報も表示する必要があります。注文ごとに Person データをロードすると、注文をループするだけで、データベース呼び出しがなくなります。代わりに Person データの遅延読み込みを使用する場合は、注文をループするときに、注文ごとに追加のデータベース呼び出しを行って Person データを取得する必要があります。それはたくさんの電話です。
必要に応じて、違いを分割して、"LoadChildren" のフラグを渡すことができるロード メソッドを設計することもできます。そうすることで究極の柔軟性が得られますが、コードのどこにいるかによっては、 Person データが入力されているかどうかが必ずしもわからないため、保守性/読みやすさが犠牲になります。