如果要添加其它的水果类,我们只要在工厂方法中添加相应的Case语句就可以了.
![](/Images/OutliningIndicators/ContractedBlock.gif)
Code
namespace InterfaceFruitFactory
{
/// <summary>
/// 水果的接口,生产水果的方法
/// </summary>
public interface IFruit
{
void ProductFruit();
}
/// <summary>
/// 香蕉类,实现了水果接口
/// </summary>
public class Banana : IFruit
{
#region IFruit 成员
public void ProductFruit()
{
Console.WriteLine("Banana![](/Images/dot.gif)
![](/Images/dot.gif)
![](/Images/dot.gif)
![](/Images/dot.gif)
![](/Images/dot.gif)
..");
}
#endregion
}
/// <summary>
/// 苹果类,实现了水果接口
/// </summary>
public class Apples:IFruit
{
#region IFruit 成员
public void ProductFruit()
{
Console.WriteLine("Apples![](/Images/dot.gif)
![](/Images/dot.gif)
![](/Images/dot.gif)
![](/Images/dot.gif)
![](/Images/dot.gif)
..");
}
#endregion
}
/// <summary>
/// 简单工厂类
/// </summary>
public class FruitFactory
{
/// <summary>
/// 工厂的方法,静态的
/// 返回的是接口类型,
/// 通过传过来的参数,来决定实例化哪个对象
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public static IFruit CreateFruit(string name)
{
IFruit fruit=null;
switch(name)
{
case "Apples":
fruit = new Apples();
break;
case "Banana":
fruit = new Banana();
break;
default:
fruit = null;
break;
}
return fruit;
}
}
class Program
{
static void Main(string[] args)
{
IFruit ifruit = FruitFactory.CreateFruit("Apples");
ifruit.ProductFruit();
}
}
![](/Images/OutliningIndicators/ContractedBlock.gif)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
namespace InterfaceFruitFactory
{
/// <summary>
/// 水果的接口,生产水果的方法
/// </summary>
public interface IFruit
{
void ProductFruit();
}
/// <summary>
/// 香蕉类,实现了水果接口
/// </summary>
public class Banana : IFruit
{
#region IFruit 成员
public void ProductFruit()
{
Console.WriteLine("Banana
![](/Images/dot.gif)
![](/Images/dot.gif)
![](/Images/dot.gif)
![](/Images/dot.gif)
![](/Images/dot.gif)
![](/Images/dot.gif)
}
#endregion
}
/// <summary>
/// 苹果类,实现了水果接口
/// </summary>
public class Apples:IFruit
{
#region IFruit 成员
public void ProductFruit()
{
Console.WriteLine("Apples
![](/Images/dot.gif)
![](/Images/dot.gif)
![](/Images/dot.gif)
![](/Images/dot.gif)
![](/Images/dot.gif)
![](/Images/dot.gif)
}
#endregion
}
/// <summary>
/// 简单工厂类
/// </summary>
public class FruitFactory
{
/// <summary>
/// 工厂的方法,静态的
/// 返回的是接口类型,
/// 通过传过来的参数,来决定实例化哪个对象
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public static IFruit CreateFruit(string name)
{
IFruit fruit=null;
switch(name)
{
case "Apples":
fruit = new Apples();
break;
case "Banana":
fruit = new Banana();
break;
default:
fruit = null;
break;
}
return fruit;
}
}
class Program
{
static void Main(string[] args)
{
IFruit ifruit = FruitFactory.CreateFruit("Apples");
ifruit.ProductFruit();
}
}