1. 抽象工厂模式

1.1 定义

抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。

在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。

1.2 程序样例

定义抽象工厂类:

public abstract class AbstractFactory {
    public abstract Phone getPhone(String name);
}

实现工厂:

public class PhoneAbstractFactory extends AbstractFactory {
    @Override
    public Phone getPhone(String name) {
        if ("apple".equals(name)) {
            return new ApplePhone();
        } else if ("huawei".equals(name)) {
            return new HuaweiPhone();
        } else if ("xiaomi".equals(name)) {
            return new XiaomiPhone();
        } else {
            return null;
        }
    }
}

定义工厂生成器:

public class FactoryProducer {
    public static AbstractFactory getFactory(String choice) {
        if (choice.equalsIgnoreCase("phone")) {
            return new PhoneAbstractFactory();
        }
        return null;
    }
}

测试:

public class Test {

    public static void main(String[] args) {
        final AbstractFactory abstractFactory = FactoryProducer.getFactory("phone");
        final Phone xiaomi = abstractFactory.getPhone("xiaomi");
        final Phone huawei = abstractFactory.getPhone("huawei");
        final Phone apple = abstractFactory.getPhone("apple");
        xiaomi.use();
        huawei.use();
        apple.use();
    }
}