次のクラス図を検討してください。
+--------+ * +------------+
| Person |------>| Property |
+--------+ +------------+
^
|
+--------+------+
| |
+----+----+ +------+-----+
| Car | | House |
+---------+ +------------+
人には、車、家、スマートフォンなど、多くのプロパティがあります。これらのプロパティにはそれぞれ異なる属性があります(車には、エンジンサイズ、モデル、年...住所としての家、サイズなどがあります)。多くのサブクラス(プロパティのタイプ)があります。
現在、私の実装では、Propertyに型フィールドを持つ抽象クラスがあります。タイプを確認し、それによって適切なサブクラスにキャストします。
私の質問は:これが唯一の方法ですか?これはそれを行う正しい方法ですか?気分が悪いので、デザインの感想を教えてください。根本的な変更も受け入れられます。