1

どのオプションが最適かを判断する方法が本当にわかりません。他の属性の中でも、餌を与えることを目的とした動物の「推奨年齢」を持つクラス「製品」があります。

種ごとに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;
}

これは非常にばかげたものかもしれませんが、私は立ち往生しています。皆さん、ありがとうございました。

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 に答える