どのオプションが最適かを判断する方法が本当にわかりません。他の属性の中でも、餌を与えることを目的とした動物の「推奨年齢」を持つクラス「製品」があります。
種ごとにRecommendedAgeとは異なる値が必要であることに注意してください。それらの同等の数値は気にしません(差別化されたユニオンで表されるものですが、ORMの問題により使用できません)。
"RecommendedAge" の可能な値は対象の動物の種類によって異なるため、次の (またはその他の) アプローチのどれが最適かはわかりません (すべて疑似コード)。
Class Product {
Id id;
String name;
RecommendedAge recommendedAge;
}
AbstractClass RecommendedAge {
}
Class DogRecommendedAge : RecommendedAge {
readonly const Int Big;
readonly const Int Small;
}
Class CatRecommendedAge : RecommendedAge {
readonly const Int Medium;
readonly const Int Tiny;
}
または次のようなもの:
AbstractClass Product {
Id id;
String name;
}
Enum DogRecommendedAge {
Big = 0;
Small = 1;
}
Enum CatRecommendedAge {
Medium = 0;
Tiny= 1;
}
Class DogProduct : Product {
DogRecommendedAge dogRecommendedAge;
}
Class CatProduct : Product {
CatRecommendedAge catRecommendedAge;
}
これは非常にばかげたものかもしれませんが、私は立ち往生しています。皆さん、ありがとうございました。