簡(jiǎn)單工廠模式

我喜歡簡(jiǎn)單、粗獷、暴力、有說服力的方式 ヾ(?■_■)ノ
筆記一下,不能入圍GOF的23種設(shè)計(jì)模式的第24種設(shè)計(jì)模式
學(xué)習(xí)地址,膜拜大神

定義:從設(shè)計(jì)模式的類型上來(lái)說,簡(jiǎn)單工廠模式是屬于創(chuàng)建型模式,又叫做靜態(tài)工廠方法(Static Factory Method)模式,但不屬于23種GOF設(shè)計(jì)模式之一。
簡(jiǎn)單工廠模式是由一個(gè)工廠對(duì)象決定創(chuàng)建出哪一種產(chǎn)品類的實(shí)例。簡(jiǎn)單工廠模式是工廠模式家族中最簡(jiǎn)單實(shí)用的模式,可以理解為是不同工廠模式的一個(gè)特殊實(shí)現(xiàn)。

既然是工廠對(duì)吧!那就開始生產(chǎn)東西了,以下汽車為例

package com.yexue.example.design_mode.single_factory;

public class Test {
    public static void main(String[] args) {
        /**
         * 需求:我要一輛寶馬
         * 實(shí)現(xiàn):調(diào)用汽車工廠生產(chǎn)寶馬
         */
        ICar car = CarFactory.createCar("BaoMa");
        System.out.println(car.biaozhi());
    }

}

然后找到汽車工廠準(zhǔn)備生產(chǎn)汽車了

package com.yexue.example.design_mode.single_factory;
/***
 * 簡(jiǎn)單工廠模式
 * @author yexue
 * @expl 車的工廠類
 * @time 2017年8月31日 下午2:38:00
 */
public class CarFactory {
    private CarFactory(){}
    
    /**
     * 以寶馬和紅旗為例
     * @param type
     * @return
     */
    public static ICar createCar(String type) {
        if(type.equals("BaoMa")){//寶馬
            return new BaoMaCar();
        }else if(type.equals("HongQi")){
            return new HongQiCar();//紅旗
        }else{
            throw new RuntimeException();
        }
    }

}

生產(chǎn)汽車的按照汽車的樣子來(lái)生產(chǎn)
汽車模型

package com.yexue.example.design_mode.single_factory;

/**
 * 簡(jiǎn)單工廠模式
 * 
 * @author yexue
 * @expl 車模型
 * @time 2017年8月31日 下午2:36:52
 */
public interface ICar {
    /**
     * 車標(biāo)
     */
    public String biaozhi();
    //其他車的屬性
    //車門、大燈、玻璃、座位、輪胎、發(fā)動(dòng)機(jī)....

}

按照車模型產(chǎn)出來(lái)的汽車

寶馬

package com.yexue.example.design_mode.single_factory;
/**
 * 簡(jiǎn)單工廠模式
 * @author yexue
 * @expl 寶馬
 * @time 2017年8月31日 下午2:57:26
 */
public class BaoMaCar implements ICar{

    @Override
    public String biaozhi() {
        return "寶馬";
    }

}

紅旗

package com.yexue.example.design_mode.single_factory;
/**
 * 簡(jiǎn)單工廠模式
 * @author yexue
 * @expl 紅旗
 * @time 2017年8月31日 下午2:56:30
 */
public class HongQiCar implements ICar{
    @Override
    public String biaozhi() {
        return "紅旗";
    }
    

}

就是這么粗獷、暴力


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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