Factory Pattern を少し理解できたので、この実装を思い付きました。
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Enter the fruit name to get the Fruit!");
string fruit = Console.ReadLine();
FruitsList fruits;
if (Enum.TryParse(fruit, true, out fruits))
{
var fruitWeight = GetFruitWeight(fruits);
Console.ReadLine();
}
else
{
Console.WriteLine("Fruit Name is undefined!");
Console.ReadLine();
}
}
private static object GetFruitWeight(FruitsList fruitNumber)
{
switch (fruitNumber)
{
case FruitsList.Banana:
return new Banana();
case FruitsList.Apple:
return new Apple();
}
return null;
}
}
internal class Banana : IFruits
{
public float ReturnFruitWeight()
{
return (float)10.00;
}
}
public interface IFruits
{
float ReturnFruitWeight();
}
public class Apple : IFruits
{
public float ReturnFruitWeight()
{
return (float)30.00;
}
}
public enum FruitsList
{
Apple,
Banana,
}
(理論的な理解からの)私の全体的な考えは、 GetFruitWeights 関数が列挙型を受け入れてから果物の重量を返すということです。特定のフルーツのオブジェクトを取得できましたが、フルーツ オブジェクトからフルーツの重量を取得する方法に行き詰まりました。
また、私の疑問リストに追加するために、この実装で本当に Factory パターンに従っているのでしょうか? また、インターネットの一部の資料では、抽象クラスも使用されていますか? 何に従うべきですか?インターフェイスの実装ですか、それとも抽象クラスを使用してオーバーライドする必要がありますか?
よろしくお願いします。