2013-03-30 104 views
1

我真的找不到如何決定哪個選項是最好的。我有一個類「產品」,其中有一個「RecommendedAge」用於餵養動物,以及其他屬性。抽象類VS枚舉(一般OOP)

請注意,我只是想推薦給每個物種的不同值,我不關心他們的數值等價物(什麼會用歧視聯盟代表,但由於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; 
} 

這可能是一個非常愚蠢的,但我卡住了。謝謝你們。

回答

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);