私は、レシピアプリケーションのドメインモデルで作業中で、問題にぶつかっています。特定の動作を特定のクラスのインスタンスのサブセットに限定する方法はありますか?
このアプリケーションには、成分として作用することができる複数の実体があり、そのうちの2つは、Product
とRecipe
です(レシピは他のレシピの成分にすることができます)。通常は、これらのエンティティのそれぞれが実装できるインタフェースに、コンポーネント関連の機能をカプセル化します。問題は、すべての製品インスタンスが成分になることができますが、レシピインスタンスのサブセットのみが成分になることができます。私はいくつかのレシピインスタンスが成分として作用することが可能でなければならない要件をサポートするために、このモデルを再構築するにはどうすればよい
interface IIngredient
{
void DoIngredientStuff();
}
class Product : IIngredient
{
void DoIngredientStuff()
{
// all Products are ingredients - do ingredient stuff at will
}
}
class Recipe : IIngredient
{
public IEnumerable<IIngredient> Ingredients { get; set; }
void DoIngredientStuff()
{
// not all Recipes are ingredients - this might be an illegal call
}
}
?
は素敵な答えを見つけ出すために、私たちは、「なぜ、正確にすべてのレシピを理解する必要があります材料として作用する –