简单工厂模式
客户端创建对象不会对客户端暴露逻辑,增加新的子类,不会对其它子类造成影响。简单工厂模式的工厂类一般使用静态方法,通过接受参数不同来返回不同的对象实例
例:小明来到果园,果园有香蕉、苹果、樱桃,小明想试吃其中一种水果。走一会又发现有新的水果荔枝、龙眼,增加这两个品种,对其它代码逻辑也不会产生影响。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SimpleFactory
{
public class Fruit
{
public virtual void Eat()
{
Console.WriteLine("Eat What!");
}
}
public class Apple : Fruit
{
//苹果
public override void Eat()
{
Console.WriteLine("I am eating apple");
}
}
public class Banana : Fruit
{
//香蕉
public override void Eat()
{
Console.WriteLine("I am eating banana");
}
}
public class Cherry : Fruit
{
//樱桃
public override void Eat()
{
Console.WriteLine("I am eating cherry");
}
}
public class Factory
{
public static Fruit GetType(string name)
{
Fruit f1 = null;
switch (name)
{
case "Apple":
f1=new Apple();
break;
case "Banana":
f1 = new Banana();
break;
case "Cherry":
f1 = new Cherry();
break;
default:
break;
}
return f1;
}
}
class Program
{
static void Main(string[] args)
{
Fruit f1 = Factory.GetType("Banana");
f1.Eat();
Console.ReadKey();
}
}
}