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();
}
}