动态工厂模式学习,动态工厂类的优点就是不管后续新增有多少接口和子类实例,无需修改工厂类,只需要调用Factory.getInstance(className,接口.class),即可完成接口子类对象的实例化创建
package com.tencent.baosen;
/**
* 动态工厂模式学习
*/
public class Factory {
//工厂模式不需要外部对象实例化,所以构造方法应该是私有化的
private Factory(){}
//构造方法私有化后,该类中的其他方法应该是static才能被外部调用
public static <T> T getInstance(String className, Class<T> clazz){
T instance = null;
try {
//通过反射,将静态工厂类转变成动态工厂类
instance = (T) Class.forName(className).getDeclaredConstructor().newInstance();
} catch (Exception e) {
e.printStackTrace();
}
return instance;
}
}