解耦
解耦就是降低程序间的耦合度
开发时对解耦的要求是编译时不依赖,运行时才依赖
解耦的思路:1.尽量使用反射创建对象避免使用new关键字
2.使用配置文件,不要在java代码中直接使用全限定类名的字符串。
使用过程模式进行解耦:
首先我们先配置一个配置文件,当然,是使用key=value形式的。
之后我们可以创建一个工厂类,如:
public class BeanFactory {
//定义一个Properties对象
private static Properties props;
//使用静态代码块为Properties对象赋值
static {
try {
//实例化对象
props = new Properties();
//获取properties文件的流对象
InputStream in = BeanFactory.class.getClassLoader().getResourceAsStream("bean.properties");
//加载配置
props.load(in);
}
}catch(Exception e){
e.printStackTrace();
}
}
/**
* 根据Bean的名称获取bean对象
* @param beanName 配置文件中,全限定类名的key
* @return 万能的object
*/
public static Object getBean(String beanName){
Object bean = null;
try {
//获取全限定类名
String beanPath = props.getProperty(beanName);
//利用反射创建对象
bean = Class.forName(beanPath).newInstance();//每次都会调用默认构造函数创建对象
}catch (Exception e){
e.printStackTrace();
}
return bean;
}
}
当然,如果你想让你的对象是单例的,那么你可以考虑使用一个Map<String, Object>集合来保存对象