利用配置檔案,在工廠中建立一個實現類物件
package cn.itcast.usermng.dao;
import java.io.InputStream;
import java.util.Properties;
/**
* 通過配置檔案得到dao實現類的名稱!
* 通過類名稱,完成建立類物件!(反射完成的!)
* @author cxf
*
*/
public class DaoFactory {
private static Properties props = null;
static {
// 載入配置檔案內容到props物件中
try {
InputStream in = DaoFactory.class
.getClassLoader().getResourceAsStream("dao.properties");
props = new Properties();
props.load(in);
} catch(Exception e) {
throw new RuntimeException(e);
}
}
/**
* 返回一個具體UserDao的實現類物件
* @return
*/
public static UserDao getUserDao() {
/**
* 給出一個配置檔案,檔案中給出UserDao介面的實現類名稱!
* 我們這個方法,獲取實現類的類名,通過反射完成建立物件!
*/
/*
* 得到dao實現類的名稱
*/
String daoClassName = props.getProperty("cn.itcast.usermng.dao.UserDao");
/*
* 通過反射來建立實現類的物件
*/
try {
Class clazz = Class.forName(daoClassName);
return (UserDao)clazz.newInstance();
} catch(Exception e) {
throw new RuntimeException(e);
}
}
}
總結一句話:
通過類載入器,讀取配置檔案,獲得實現類的地址
繼續通過類載入器,載入從配置檔案中讀取到的類地址,建立該類物件,並返回