BeanFactory的思想
?1.BeanFactory所用到的設計模式是抽象工廠設計模式擦酌。
??此模式是通過配置文件+反射來動態(tài)得到對象意敛。那么這種模式有什么好處嗎牧挣?首先泳唠,簡單談下當未使用開發(fā)框架時鸠按,我們寫好的項目是要發(fā)布出去的礼搁,及發(fā)布到Tomcat上,以便客戶訪問目尖,這時馒吴,我們所發(fā)布的項目不會包含有項目源碼的,都是class文件和前端頁面還有配置文件瑟曲,如果我想換個數(shù)據(jù)庫了饮戳,那么一般情況下,都不會選擇重新編譯源文件重新發(fā)布項目洞拨,而是要想辦法解決這個問題扯罐,那么抽象工廠模式就能很好的解決這個問題。將需要涉及到的對象放到配置文件中烦衣,再通過反射動態(tài)得到相應的對象歹河,那么只需要簡單改下配置文件就可以了,而不需要去重新編譯花吟,大大方便了開發(fā)與部署秸歧。
?2.代碼
??
package com.wuhaitao.util;
import java.util.ResourceBundle;
/**
* @Classname BeanFactory
* @Description TODO
* @Date 2019/3/13 16:05
* @Created by wuhaitao
*/
public class BeanFactory {
public static <T> T newInstance(Class<T> clazz) {
//通過字節(jié)碼對象得到接口名
String name = clazz.getSimpleName();
//讀取配置文件,通過接口名找到相應實現(xiàn)類對象名
ResourceBundle resourceBundle = ResourceBundle.getBundle("bean");
String className = resourceBundle.getString(name);
//通過反射創(chuàng)建實現(xiàn)類對象
try {
return (T) Class.forName(className).newInstance();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}