本文主要介绍抽象工厂模式,和上文介绍的工厂方法模式的区别是:工厂方法模式是针对一个产品来构建,而抽象工厂模式则是针对多个产品来构建。
下面我直接上代码来阐述抽象工厂模式的具体实现:
public final class Factory {
public final static Product createProduct(String name){
switch(name){
case "手机":{
return new Mobile();
}
case "平板":{
return new Pad();
}
case "电脑":{
return new Computer();
}
}
return null;
}
}
public abstract class Product {
public abstract void execute();
}
public class Mobile extends Product {
@Override
public void execute() {
System.out.println("这是手机!");
}
}
public class Pad extends Product {
@Override
public void execute() {
System.out.println("这是平板!");
}
}
public class Computer extends Product {
@Override
public void execute() {
System.out.println("这是电脑!");
}
}
public class Client {
public static void main(String[] args) {
Product mobile = Factory.createProduct("手机");
mobile.execute();
Product pad = Factory.createProduct("平板");
pad.execute();
Product computer = Factory.createProduct("电脑");
computer.execute();
}
}
我们通过传入不同的状态来构建不同的产品,这就是抽象工厂模式的核心思想。
在我们常用的框架如:Sping、Hibernate等框架都大量运用了抽象工厂模式。
应用场景:当有多个对象需要实例化的时候,我们就可以考虑创建一个工厂来统一管理这些对象。