我有点能够理解工厂模式并想出了这个实现。
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 函数应该接受一个枚举类型,然后返回水果的重量。我能够获得特定水果的对象,但现在坚持如何从水果对象中获得水果的重量。
另外,为了增加我的疑虑,我真的在这个实现中遵循工厂模式吗?而且,互联网上的一些材料也使用抽象类?我应该遵循什么?接口实现还是我应该使用抽象类并覆盖它?
在此先感谢您的帮助。