1、抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态。抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式。抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象。
2、 一个系统不应当以来与产品类实例如何被创建、组合和表达细节,这对于所有形态的工厂模式是重要的。
这个系统的产品有多于一个产品族,而系统只消费其中某一族的产品。
同属于同一个产品族的产品是在一起使用的,这一约束必须在系统的设计中表现出来。
系统一个产品类的库,所有的产品以同样的接口出现,从而使得客户端不依赖与实现。
3、抽象工厂对“开-闭”原则的支持
对于产品族的增加,抽象工厂符合“开-闭”原则,而对于产品层次的增加,抽象工厂不符合“开-闭”原则。
4、实例
public abstract class AbstractFactory {
abstract public AbstractProductA CreateProductA();
abstract public AbstractProductB CreateProductB();
}
public class ConcreteFactory extends AbstractFactory {
@override
public AbstractProductA CreateProductA() {
return new ProductA();
}
@override
public AbstractProductB CreateProductB() {
return new ProductB();
}
}
public abstract class AbstractProductA {
protected abstract void use();
}
public abstract class AbstractProductB {
protected abstract void use();
}
public class ProductA extends AbstractProductA {
@Override
protected void use() {
System.out.println("A");
}
}
public class ProductB extends AbstractProductB {
@Override
protected void use() {
System.out.println("B");
}
}
public static void main(String[] args) {
ConcreteFactory mFactory = new ConcreteFactory();
AbstractProductA mAbstractProductA = mFactory.CreateProductA();
AbstractProductB mAbstractProductB = mFactory.CreateProductB();
}