简单工厂模式:
被创建的实例通常具有共同的父类。如在农场中 根据水果名称获取水果。
有工厂角色、抽象产品角色、具体产品角色
public interface IFruit
{
void Harvest();
}
public class Apple : IFruit
{
public Apple()
{
Console.WriteLine("种植=>Apple");
}
public void Harvest()
{
Console.WriteLine("收获=>Apple");
}
}
public class Orange : IFruit
{
public Orange()
{
Console.WriteLine("种植=>Orange");
}
public void Harvest()
{
Console.WriteLine("收获=>Orange");
}
}
public class SimpleFactory
{
public static IFruit GetFruit(string name)
{
switch (name)
{
//此处直接采用工厂类 的方式创建对象,此外还有
//2.反射创建 3.克隆创建 4. new
case "Apple":return new Apple();
case "Orange": return new Orange();
default:throw new Exception();
}
}
}
class Program
{
static void Main(string[] args)
{
//1.通过静态工厂方法创建水果,如果需要多增加水果,只需要修改工厂。
//2.如果将参数改为从配置文件读入,将可以不用更改客户端源代码实现获取不同水果
//3.对象的创建和使用应当分离,一个类不能既负责创建又负责使用!!!
var apple= SimpleFactory.GetFruit("Apple");//Apple可从配置文件读入
apple.Harvest();
}
}
上述中工厂角色是 SimpleFactory、抽象产品角色 IFruit、具体产品角色是 Apple、Orange