天天看點

《java設計模式》之工廠設計模式

工廠設計模式介紹:

工廠設計模式就是用于産生對象的。

看下方簡單案例:

工廠設計模式就是用于産生對象的。

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;

    }


}