1、工厂模式的定义
定义一个创建对象的接口(工厂接口),由其子类(工厂类)决定初始化哪个类(产品类)
换句话说,根据要求生成指定对象
2、工厂模式的实现要点
定义一个工厂类的接口,工厂子类实现该接口,并根据入参决定实例化哪个产品类
可以借助反射或条件判断来实现这种决定
3、应用场景
减少代码中类的耦合
系统中可能会扩展出多种同类型的类,比如不同数据库有不同的连接驱动
4、实现举例
抽象产品类-引擎
public abstract class EngineProduct {
public abstract void provideMotivation();
}
具体产品类-BMW引擎
public class BMWEngineProduct extends EngineProduct {
@Override
public void provideMotivation(){
System.out.println("provide motivation for BMW car!");
}
}
具体产品类-奔驰引擎
public class BenzEngineProduct extends EngineProduct {
@Override
public void provideMotivation(){
System.out.println("provide motivation for Benz car!");
}
}
抽象工厂类
public abstract class AbstractFactory {
abstract <T extends EngineProduct> T getInstance(Class<T> cls);
}
具体工厂类(通过反射实现)
public class CommonFactory extends AbstractFactory {
public <T extends EngineProduct> T getInstance(Class<T> cls) {
EngineProduct product = null;
try {
product = cls.newInstance();
} catch (Exception e) {
System.out.println("produce product failed!");
}
return (T)product;
}
}