二、設計模式之簡單工廠模式

一、簡單工廠定義

由一個工廠對象決定建立哪種產品類的實例,不屬於GOF23種設計模式。

適用場景
1) 工廠類負責建立的對象比較少
2) 客戶端(應用層)只知道傳入工廠類的參建立對象(邏輯)不關心

優勢:只須要傳入一個正確的參數,就能夠獲取你所須要的對象而無需知道其建立細節。
缺點:工廠類的職責相對太重,增長新的產品,須要修改工廠類的判斷邏輯,違背開閉原則。

二、代碼演示

public abstract class Video {
    public abstract void produce();
}

public class JavaVideo extends Video {
    @Override
    public void produce() {
        System.out.println("錄製Java課程視頻");
    }
}

public class PythonVideo extends Video {
    @Override
    public void produce() {
        System.out.println("錄製Python課程視頻");
    }
}
public class VideoFactory {

    public Video getVideo(Class c){
        Video video = null;
        try {
            video = (Video) Class.forName(c.getName()).newInstance();
        } catch (Exception e) {
            e.printStackTrace();
        } 
        return video;
    }

    public Video getVideo(String type){
        if("java".equalsIgnoreCase(type)){
            return new JavaVideo();
        }else if("python".equalsIgnoreCase(type)){
            return new PythonVideo();
        }
        return null;
    }
}
public class Test {
    public static void main(String[] args) {
        VideoFactory videoFactory = new VideoFactory();
        Video video = videoFactory.getVideo("java");
        if(video == null){
            return;
        }
        video.produce();

        videoFactory = new VideoFactory();
        video = videoFactory.getVideo(JavaVideo.class);
        if(video == null){
            return;
        }
        video.produce();
    }
}
相關文章
相關標籤/搜索