一、簡單工廠定義
由一個工廠對象決定建立哪種產品類的實例,不屬於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();
}
}