提供一个接口,用于创建相关的对象家族。
class AbstractProductA { }
class AbstractProductB { }
class ProductA1 extends AbstractProductA { }
class ProductA2 extends AbstractProductA { }
class ProductB1 extends AbstractProductB { }
class ProductB2 extends AbstractProductB { }
abstract class AbstractFactory {
    abstract AbstractProductA createProductA();
    abstract AbstractProductB createProductB();
}
class ConcreteFactory1 extends Factory {
    AbstractProductA createProductA() {
        return new ProductA1();
    }
    AbstractProductB createProductB() {
        return new ProductA2();
    }
}
class ConcreteFactory2 extends Factory {
    AbstractProductA createProductA() {
        return new ProductA1();
    }
    AbstractProductB createProductB() {
        return new ProductA2();
    }
}
public class Client {
    public static void main(String[] args) {
        AbstractFactory abstractFactory = new ConcreteFactory1();
        AbstractProductA productA = abstractFactory.createProductA();
        AbstractProductB productB = abstractFactory.createProductB();
    }
}
原文:https://www.cnblogs.com/Akatsuki-Sanjou/p/12749100.html