我真的找不到如何确定哪个选项最好。我有一个“产品”类,它有一个“推荐年龄”,用于喂食动物,以及其他属性。
请注意,我只想为每个物种提供不同的推荐值的值,我不关心它们的数值等价物(用判别联盟代表什么,但由于ORM问题,我不能使用它)。
作为“RecommendedAge”,可能的值根据Animal de Product目标的类型而有所不同,我不知道以下哪种方法(或任何其他方法)是最好的(所有伪代码):
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;
}
这可能是一个非常愚蠢的,但我被卡住了。谢谢大家。
答案 0 :(得分:0)
如果只是在运行时而不是在编译时存储推荐的年龄呢?在你的伪:
class RecommendedAges {
readonly const RecommendedAge dog = new RecommendedAge(2, 5); // example value
readonly const RecommendedAge cat = new RecommendedAge(3, 4); // example value
}
Class Product {
Id id;
String name;
RecommendedAge recommendedAge;
}
Product p = new Product(1, 'dog food', RecommendedAges.dog);