2

Person クラスを設計しているとしましょう。

この人物の同様のプロパティをグループ化するために埋め込みクラスを使用することは適切ですか?

たとえば、体重、身長、髪の色、目の色がある人を考えてみましょう。

これらのプロパティを人物から直接ぶら下げる代わりに、これらのプロパティを持つ PersonPhysicalAttibutes というクラスを作成したらどうなるでしょうか。

したがって、人の身長を設定する必要がある場合は、

personA.PhysicalAttributes.Height = 6.1;

これは実用的なデザインだと思いますか?

編集:

答えの1つは、アドレスプロパティを別のクラスにグループ化することに言及しています。それは、別のクラスがうまく機能する場合であることに同意します。住所クラスは、雇用主、顧客、またはベンダー クラスでも再利用できます。

ただし、物理属性を例として選んだのには理由があります。私の質問は、そのクラスが他のコンテキストで使用されないことが合理的に確信できる場合、これらを別のクラスに分割することは理にかなっていますか? 厳密には、インテリセンス/グループ化を容易にするためです。

4

3 に答える 3

0

これは、デメテルの法則に違反します。特に、このように設計することで、実際には呼び出しコードを Person クラスPersonPhysicalAttributes クラスの両方に結合しているため、後でコードを変更するのがさらに困難になります。

個人的には、このアプローチは避けたいと思います。

于 2013-05-29T04:48:42.330 に答える
0

適切なだけでなく、大きなクラスを小さなクラスに分割することが望まれます。ただし、ネーミングを検討してください。Person を次のようなオブジェクトで構成するのが最も賢明です。

Physique { Height, Weight, ... }
Face { EyeColor, HairColor, ... }
Psyche { Iq, Mood, ... }
于 2013-05-29T07:48:55.493 に答える