抽象工厂
大约 1 分钟
意图
抽象工厂也是一种工厂,跟简单工厂不同的是抽象工厂是创建一系列相关的对象,而无需指定具体的类。
而简单工厂只是决定用什么子类来实例化出的一个对象。
所谓的一系列相关的对象指的是你为了完成某个指令,需要用到A类型、B类型、C类型对象,但是为了保持风格的一致。对于A1、B1、C1是一种风格,而A1、B2、C1会导致风格会不一致。。
图片来自:https://refactoringguru.cn/design-patterns/abstract-factory
UML
实现
public class ProductA {
}
public class ProductB {
}
public class ProductA1 extends ProductA {
}
public class ProductA2 extends ProductA {
}
public class ProductB1 extends ProductB {
}
public abstract class AbstractFactory {
abstract ProductA createProductA();
abstract ProductB createProductB();
}
public class ConcreteFactory1 extends AbstractFactory {
ProductA createProductA(){
return new ProductA1();
}
ProductB createProductB(){
return new ProductB1();
}
}
public class ConcreteFactory2 extends AbstractFactory {
ProductA createProductA(){
return new ProductA2();
}
ProductB createProductB(){
return null;
}
}
public class Client {
public static void main(String[] args) {
AbstractFactory abstractFactory = new ConcreteFactory1();
ProductA productA = abstractFactory.createProductA();
ProductB productB = abstractFactory.createProductB();
// do something with productA and productB
}
}