反射加工厂模式,使用配置文件
程序员文章站
2024-01-20 16:52:04
...
/**
* 获取properties对象,用来操作properties文件
* @param confUrl 配置文件路径
* @return Properties对象
*/
public static Properties getProperty(String confUrl) {
Properties pro = new Properties();
File file = new File(confUrl);
if (file.exists()) {
try {
pro.load(new FileInputStream(file)); // 读取配置文件
} catch (IOException e) {
e.printStackTrace();
}
} else {
pro.setProperty("Reflect.Apple", "reflect.Apple"); //初始化参数
pro.setProperty("Reflect.Orange", "reflect.Orange"); //初始化参数
try {
pro.store(new FileOutputStream(file), "FRUIT CLASS"); //将参数写入配置文件
} catch (IOException e) {
e.printStackTrace();
}
}
return pro;
}
/**
* 反射获取类对象
* @param className 类全名
* @param confUrl 配置文件相对路径
* @param <T>
* @return
*/
public static <T> T getInstance(String className,String confUrl) {
T t = null;
Properties pro = getProperty(confUrl);
try {
t = (T) Class.forName(pro.getProperty(className)).newInstance();
} catch (Exception e) {
e.printStackTrace();
}
return t;
}
}