抽象工厂(Kit)模式提供一个接口,用来创建相关或依赖对象的家族,而不需要明确指定具体类。
特点:
实现:

抽象工厂(提供不同等级结构的产品工厂):
public interface Creator
{
public ProductA factoryA();
public ProductB factoryB();
}
具体工厂(实现不同等级结构中的某一族产品对象):
public class ConcreteCreator1 implements Creator
{
public ProductA factoryA()
{
return new ProductA1();
}
public ProductB factoryB()
{
return new ProductB1();
}
}
public class ConcreteCreator2 implements Creator
{
public ProductA factoryA()
{
return new ProductA1();
}
public ProductB factoryB()
{
return new ProductB1();
}
}
抽象产品:
public interface ProductA
{
}
public interface ProductB
{
}
具体产品:
public class ProductA1 implements ProductA
{
public ProductA1()
{
}
}
public class ProductA2 implements ProductA
{
public ProductA2()
{
}
}
public class ProductB1 implements ProductA
{
public ProductB1()
{
}
}
public class ProductB2 implements ProductA
{
public ProductB2()
{
}
}
相图:
每一个产品族都有一个具体工厂。而每一个具体工厂负责创建属于同一个产品族、但是分属于不同等级结构的产品。

适用性:
参与者:
优点:
缺点:
增加新的产品等级结构的时候,要改变抽象工厂接口,不支持“开-闭”原则