工廠設計模式介紹:
工廠設計模式就是用于産生對象的。
看下方簡單案例:
工廠設計模式就是用于産生對象的。
class Car{}
class BMW extends Car{}
class BSJ extends Car{}
public class Demo1 {
public static void main(String[] args) {
}
public static Car getInstance(int num){
if(num==){
return new BMW();
}else{
return new BSJ();
}
}
}
需求:編寫一個工廠方法根據配置檔案傳回對應的對象
public class Demo1 {
public static void main(String[] args) throws Exception {
Person p = (Person) getInstance();
System.out.println(p);
}
//需求: 編寫一個工廠方法根據配置檔案傳回對應的對象。
public static Object getInstance() throws Exception{
//讀取配置檔案
BufferedReader bufferedReader = new BufferedReader(new FileReader("info.txt"));
//讀取第一行 : 讀取類檔案的資訊
String className = bufferedReader.readLine();
//通過完整類名擷取對應 的Class對象
Class clazz = Class.forName(className);
//擷取到對應的構造方法
Constructor constructor = clazz.getDeclaredConstructor(null);
constructor.setAccessible(true);
Object o = constructor.newInstance(null);
//給對象設定對應的屬性值
String line = null;
while((line = bufferedReader.readLine())!=null){
String[] datas = line.split("=");
Field field =clazz.getDeclaredField(datas[]);
//設定可以通路
field.setAccessible(true);
if(field.getType()==int.class){
field.set(o, Integer.parseInt(datas[]));
}else{
field.set(o, datas[]);
}
}
return o;
}
}