1.为什么要用抽象工厂
前面介绍的工厂方法适用于工厂生产统一种类的产品,抽象工厂则适用于工厂生产一个产品簇,比如手机工厂会生成手机、耳机、等等。
2.抽象工厂实现
实现要素:
- 抽象产品
- 具体产品
- 抽象工厂
- 具体工厂
代码实现如下:
/// <summary>
/// 抽象工厂
/// </summary>
public interface IFactory
{
IPhone CreatePhone();
IEarPhone CreateEarPhone();
}
/// <summary>
/// 苹果手机工厂
/// </summary>
public class AppleFactory : IFactory
{
public IEarPhone CreateEarPhone()
{
return new AppleEarPhone();
}
public IPhone CreatePhone()
{
return new ApplePhone();
}
}
/// <summary>
/// 华为手机工厂
/// </summary>
public class HuaweiFactory : IFactory
{
public IEarPhone CreateEarPhone()
{
return new HuaweiEarPhone();
}
public IPhone CreatePhone()
{
return new HuaweiPhone();
}
}
/// <summary>
/// 小米手机工厂
/// </summary>
public class MiFactory : IFactory
{
public IEarPhone CreateEarPhone()
{
return new MiEarPhone();
}
public IPhone CreatePhone()
{
return new MiPhone();
}
}
以上便是抽象工厂的实现。
3.总结一下
抽象工厂与工厂方式使用的场景不同,抽象工厂用于生产一个产品簇,工厂方法用于生产同一种类的产品。