package factory;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
public class MyFactory {
//存储类的容器
private static Map<String,Object> ioc=new HashMap<>();
static {
InputStream inputStream= MyFactory.class.getClassLoader().getResourceAsStream("myfactory.properties");
Properties properties=new Properties();
try {
properties.load(inputStream);
//获取所有的属性名
Set<String> names= properties.stringPropertyNames();
for (String name:names
) {
//根据属性名获取属性值
String clsname= properties.getProperty(name);
//通过反射创建对象
Class cls=Class.forName(clsname);
Object obj= cls.newInstance();
//将生成的类添加到容器中
ioc.put(name,obj);
}
} catch (IOException e) {
throw new RuntimeException(e);
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
} catch (InstantiationException e) {
throw new RuntimeException(e);
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
}
}
//调取类的方法
public static Object getBean(String name){
return ioc.get(name);
}
}
配置文件
category=Jopo.Category
products=Jopo.Products