提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
工厂方法只是用于创建一个对象,而抽象工厂创建的是对象家族,也就是很多对象,而且这些对象是相关的,必须一起创建出来。
类图

实现
1 2 3
| public class AbstractProductA {
}
|
1 2 3
| public class AbstractProductB {
}
|
1 2 3
| public class ConcretProductA1 extends AbstractProductA {
}
|
1 2 3
| public class ConcretProductA2 extends AbstractProductA {
}
|
1 2 3
| public class ConcretProductB1 extends AbstractProductB {
}
|
1 2 3
| public class ConcretProductB2 extends AbstractProductB {
}
|
1 2 3 4 5 6 7
| public abstract class AbstractFactory {
public abstract AbstractProductA createProductA(); public abstract AbstractProductB createProductB(); }
|
1 2 3 4 5 6 7 8 9 10 11 12 13
| public class ConcreteFactory1 extends AbstractFactory {
@Override public AbstractProductA createProductA() { return new ConcretProductA1(); }
@Override public AbstractProductB createProductB() { return new ConcretProductB1(); }
}
|
1 2 3 4 5 6 7 8 9 10 11 12 13
| public class ConcreteFactory2 extends AbstractFactory {
@Override public AbstractProductA createProductA() { return new ConcretProductA2(); }
@Override public AbstractProductB createProductB() { return new ConcretProductB2(); }
}
|
1 2 3 4 5 6 7 8 9
| public class Client {
public static void main(String[] args) { AbstractFactory factory = new ConcreteFactory1(); AbstractProductA productA = factory.createProductA(); AbstractProductB productB = factory.createProductB(); } }
|