簡單工廠模式FactoryPattern

工廠模式是常見的設計模式之一,原理可以類比工廠裏面有N個生產線各司其職生產商品,其實所謂的設計模式就是一種既定的代碼習慣,無外乎此.下面博主會簡單的說下自己對工廠模式的理解與代碼demo,僅供參考.語言是死的,人是活的.廢話不多說,開整.
博主此次demo中的代碼共分爲五個文件:
1.接口:Food.java(食物接口,可以類比食物生產許可證)
2.類:NoodleProductLine.java繼承Food接口(麪條類(類比生產線))
3.類:DumplingProductLine.java繼承Food接口(餃子類(類比生產線))
4.類:FoodFactory.java(類比食品廠)
5.類:FactoryPatternDemo.java工廠入口
接下來是這五個文件的關係:
這裏寫圖片描述
接下來上代碼:

package com.example.factoryPattern;

/**
 * Created by zhangrui on 2018/4/20.
 */
/*/**
* @author zhangrui
* @Description 食物接口,可以類比食物生產許可證
* @Date 10:31 2018/4/20
* @Param
* @returu
**/
public interface Food {
    public String creat();
}
package com.example.factoryPattern;

/**
 * Created by zhangrui on 2018/4/20.
 */
/*
* @ClassName DumplingProductLine
*@Description TODO 餃子類(類比生產線) 這條生產線具有生產食物的資質 根據自身需求專門用來生產--餃子
*@Author zhangrui
*@Date 10:31 10:31
*@Version 
* */
public class DumplingProductLine implements Food{
    @Override
    public String creat() {
        return  ceretDumpling();
    }

    private String ceretDumpling() {
        return "工廠生產了餃子(I'm a fresh dumpling)";
    }
}
package com.example.factoryPattern;

/**
 * Created by zhangrui on 2018/4/20.
 */
/*
* @ClassName NoodleProductLine
*@Description TODO 麪條類(類比生產線) 這條生產線具有生產食物的資質 根據自身需求專門用來生產--麪條
*@Author zhangrui
*@Date 10:30 10:30
*@Version 
* */
public class NoodleProductLine implements Food{
    @Override
    public String creat() {
        return creatNoodle();
    }
    private String creatNoodle() {
        return "工廠生產了麪條(I'm a noodle)";
    }
}
package com.example.factoryPattern;

/**
 * Created by zhangrui on 2018/4/20.
 */
/*
* @ClassName FoodFactory
*@Description TODO 創建食品工廠生產根據訂單要求生產食品
*@Author zhangrui
*@Date 10:41 10:41
*@Version 
* */
public class FoodFactory {
    //工廠有兩條生產線
    NoodleProductLine noodleProductLine = new NoodleProductLine();
    DumplingProductLine dumplingProductLine = new DumplingProductLine();
    //聲明處理結果msg
    String msg= "";
    //進貨商提交訂單需求foodType
    public String creatFood(String...foodType){
        //對進貨商的需求進行判斷
        //如果需要的是
        for (int i = 0;i < foodType.length;i++ ){
            if (foodType[i].equals("noodle")){
                //調用麪條生產線生產麪條
                msg += noodleProductLine.creat();
            }else if (foodType[i].equals("dumpling")){
                //調用餃子生產線生產餃子
                msg += dumplingProductLine.creat();
            }else {
                //工廠沒有對應的生產線,那就沒辦法調用生產線生產食物,所以返回提示信息
                msg += "訂單中的食物"+foodType[i]+"我們廠沒辦法成產,找別家看看吧";
            }
        }
        //工廠運行確認完畢
        return msg;
    }
}
package com.example.factoryPattern;

/**
 * Created by zhangrui on 2018/4/20.
 */
/*
* @ClassName FactoryPatternDemo
*@Description TODO
*@Author zhangrui
*@Date 11:00 11:00
*@Version 
* */
public class FactoryPatternDemo {
    public static void main(String[] args) {
        //聲明一個工廠
        FoodFactory foodFactory = new FoodFactory();
        //訂單
        String[] order = {"noodle","dumpling"};
        //購貨商向工廠下發訂單,經過食品廠操作後返回結果
        String meg = foodFactory.creatFood(order);
        //對返回的結果進行輸出
        System.out.println(meg);
    }
}

運行結果如下圖所示:
這裏寫圖片描述
工廠模式的設計理念比較簡單,核心理念就是各司其職,有很高的單一性,但是,隨着業務需求的增多,隨之而來的是生產線的增多.
使用場景: 1、日誌記錄器:記錄可能記錄到本地硬盤、系統事件、遠程服務器等,用戶可以選擇記錄日誌到什麼地方。 2、數據庫訪問,當用戶不知道最後系統採用哪一類數據庫,以及數據庫可能有變化時。 3、設計一個連接服務器的框架,需要三個協議,”POP3”、”IMAP”、”HTTP”,可以把這三個作爲產品類,共同實現一個接口。(粘貼而來)
下面是本篇博文代碼的GitHub地址,有需要的可以前去copy:
工廠模式github地址
Over!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章