定义:定义了一个创建对象的抽象方法,由子类决定要实例化的类。工厂方法模式将对象的实例化推迟到子类。
// 工厂方法模式
namespace ConsoleApp1
{
public abstract class Creator
{
public abstract Product createProduct(string d);
}
public abstract class Product
{
public abstract string getName();
}
// 原有产品
public class IPhoneProduct : Product
{
public override string getName()
{
return "手机";
}
}
public class IPadProduct : Product
{
public override string getName()
{
return "平板";
}
}
public class ConcreteCreator : Creator
{
public override Product createProduct(string d)
{
Product obj = null;
if (d.Equals("IPhone"))
{
obj = new IPhoneProduct();
}
if (d.Equals("IPad"))
{
obj = new IPadProduct();
}
return (Product)obj;
}
}
// 新增产品
public class WatchProduct : Product
{
public override string getName()
{
return "手表";
}
}
public class ConcreteCreator2 : Creator
{
public override Product createProduct(string d)
{
Product obj = null;
if (d.Equals("Watch"))
{
obj = new WatchProduct();
}
return (Product)obj;
}
}
class Program
{
static void Main(string[] args)
{
Creator creator = new ConcreteCreator();
Product product = creator.createProduct("IPhone");
if (product != null)
{
Console.WriteLine(product.getName());
}
// 调用新增产品
creator = new ConcreteCreator2();
product = creator.createProduct("Watch");
if (product != null)
{
Console.WriteLine(product.getName());
}
}
}
}