现象:
设计模式-创建型设计模式-抽象工厂模式学习
实现:
抽象工厂模式是工厂方法模式的升级版本,工厂方法模式只生产一个等级的产品,而抽象工厂模式可生产多个等级的产品。
方法:
一:创建抽象产品,详细产品A和详细产品B都继承抽象产品
// 抽象产品
interface Product {
void show();
}
//详细产品A
static class ProductA implements Product {
@Override
public void show() {
System.out.println("产品A");
}
}
// 详细产品B
static class ProductB implements Product {
@Override
public void show() {
System.out.println("产品B");
}
}
二:抽象工厂:提供了产品的生成方法。
一个工厂可以生产多个产品
public class ProductFactory implements AbstractFactory{
@Override
public ProductA newProductA() {
System.out.println("工厂1->生产产品A");
return new ProductA();
}
@Override
public ProductB newProductB() {
System.out.println("工厂1->生产产品B");
return new ProductB();
}
}
三:根据名称生成具体的工厂
// 根据名称生成具体的工厂
public static Object getFactory(String cName) {
try {
Class<?> c = Class.forName(cName);
Object obj = c.newInstance();
return obj;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
四:调用生成工厂的方法来生成工厂然后使用工厂生成产品
ProductFactory factory = (ProductFactory) BuildFactory.getFactory("com.example.demo.ProductFactory");
System.out.println("工厂1对象:"+factory);
//使用工厂1生成产品A
Product productA = factory.newProductA();
productA.show();
//使用工厂1生成产品B
Product productB = factory.newProductB();
productB.show();
结果:
工厂1对象:com.example.demo.ProductFactory@2a84aee7
工厂1->生产产品A
产品A
工厂1->生产产品B
产品B