簡單工程模式

定義:由一個工廠對象決定創(chuàng)建出哪一種產(chǎn)品類的實例
類型:創(chuàng)建型,但不屬于GOF23種設(shè)計模式
適用場景:
1.工廠類負(fù)責(zé)創(chuàng)建的對象比較少
2.客戶端(應(yīng)用層)只知道傳入工廠類的參數(shù)對于如何創(chuàng)建對象(邏輯)不關(guān)心
優(yōu)點:只需要傳入一個正確的參數(shù),就可以獲取你所需對象而無需知道其創(chuàng)建細(xì)節(jié)
缺點:工廠類職責(zé)相對過重,增加新的產(chǎn)品需要修改工廠類的判斷邏輯,違背開閉原則。
看代碼:

public abstract class Video {
    public abstract void produce();
}
public class VideoFactory {
    public Video getVideo(Class c){
        Video video = null;
        try {
            video = (Video) Class.forName(c.getName()).newInstance();
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException 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 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 Test {
    public static void main(String[] args) {
//        VideoFactory videoFactory = new VideoFactory();
//        Video video = videoFactory.getVideo("java");
//        if(video == null){
//            return;
//        }
//        video.produce();
        VideoFactory videoFactory = new VideoFactory();
        Video video = videoFactory.getVideo(JavaVideo.class);
        if(video == null){
            return;
        }
        video.produce();
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 工廠模式是我們最常用的實例化對象模式了,是用工廠方法代替new操作的一種模式。通常我們所說的工廠模式是指工廠方法模...
    zfylin閱讀 1,403評論 0 7
  • 工廠模式是最常用的一類創(chuàng)建型設(shè)計模式,通常我們所說的工廠模式是指工廠方法模式,它也是使用頻率最高的工廠模式。本章將...
    justCode_閱讀 945評論 0 3
  • 一個UML類圖 類之間的關(guān)系 類的繼承結(jié)構(gòu)表現(xiàn)在UML中為:泛化(generalize)與實現(xiàn)(realize) ...
    僚機(jī)KK閱讀 747評論 0 0
  • 創(chuàng)建型設(shè)計模式: 簡單工廠模式、工廠方法模式、抽象工廠模式、單例模式、原型模式和建造者模式。 統(tǒng)共六種。 本此分享...
    markfork閱讀 461評論 0 2
  • 1.簡單工廠模式(靜態(tài)工廠方法) (1)模式動機(jī):只要知道水果名就可以得到相應(yīng)的水果 (2)在簡單工廠模式中,可以...
    XMUBeike閱讀 671評論 0 0

友情鏈接更多精彩內(nèi)容