我有点能够理解工厂模式,并提出了这个实现。工厂模式在C#
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功能应接受一个枚举类型,然后返回单果重。我能够得到一个特定水果的物体,但是现在我从水果物体中得到了水果的重量。
此外,要添加到我的疑惑列表,我真的在此实现中遵循工厂模式?另外,互联网上的一些材料也使用抽象类?我应该遵循什么?接口实现还是应该使用抽象类并重写它?
在此先感谢您的帮助。
我觉得'FruitsList'这个名字有点不对。你把它称为一个列表,但是当你把它传递给'GetFruitWeight'时,它就像一个标量(单个项目)一样使用它。它应该是一个'enum'吗? – 2013-05-06 08:34:44
谢谢你指出马修。是的,它应该是一个枚举。 – 2013-05-06 09:03:10