抽象工厂(AbstractFactory)模式:提供一个创建【产品族】的接口,其每个子类可以生产一系列相关的产品。
【产品族】是这个模式的灵魂,也是和建造者模式最大的区别。
using System;
namespace AbstractFactory
{
public abstract class Phone {
public abstract void design();
}
public abstract class Pad {
public abstract void design();
}
public abstract class Efactory
{
public abstract Phone createPhone();
public abstract Pad createPad();
}
public class MiFactory : Efactory
{
public override Pad createPad()
{
return new Mipad();
}
public override Phone createPhone()
{
return new Miphone();
}
}
public class IFactory : Efactory
{
public override Pad createPad()
{
return new Ipad();
}
public override Phone createPhone()
{
return new Iphone();
}
}
public class Company
{
public void create(Efactory factory)
{
factory.createPhone().design();
factory.createPad().design();
}
}
public class Miphone : Phone
{
public override void design()
{
Console.WriteLine("我是小米手机");
}
}
public class Mipad : Pad
{
public override void design()
{
Console.WriteLine("我是小米平板");
}
}
public class Iphone : Phone
{
public override void design()
{
Console.WriteLine("我是苹果手机");
}
}
public class Ipad : Pad
{
public override void design()
{
Console.WriteLine("我是苹果平板");
}
}
public class Test {
static void Main(string[] args){
Efactory miFactory = new MiFactory();
Company company = new Company();
company.create(miFactory);
}
}
}