1

我真的找不到如何决定哪个选项是最好的。我有一个“产品”类,其中包含要喂养的动物的“推荐年龄”,以及其他属性。

请注意,我只想要每个物种的RecommendedAge 的不同值,我不关心它们的数值等价物(用区分联合表示什么,但由于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;
}

这可能是一个非常愚蠢的,但我被困住了。谢谢你们。

4

1 回答 1

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);
于 2013-11-11T20:01:46.520 回答