3.工廠模式----Head First(設計模式進階)

簡單工廠模式

簡單工廠模式相對簡單,我們只需要將生產不同產品的邏輯放入工廠類中,當需要生產產品的時候只需要傳入類型,工廠就會生產對應的產品對象

public class SimpleFactory {


    public Piazza creatPizza(String type){
        Piazza piazza=null;
        if ("cheese".equals(type)){
            piazza=new CheesePizza();
        }else if ("clam".equals(type)){
            piazza=new ClamPizza();
        }
        return piazza;
    }
}

簡單工廠就是把變化封裝在了工廠類中,這樣就不需要修改其他的代碼(指客戶端),只需要修改工廠代碼就好了.當然,這就是弊端所在,開放了修改,違背了開放-封閉原則.

工廠方法模式

工廠方法模式是將工廠抽象成接口,不同的產品對應一個具體的工廠,這樣,如果增加一個新的產品,就只需要增加一個產品類,和對應的一個工廠就行了,但是客戶端就要承擔起選擇哪個工廠生產產品的任務.

抽象工廠模式

在這裏插入圖片描述

工廠方法模式引入工廠等級結構,解決了簡單工廠模式中工廠類職責過重的問題,但由於工廠方法模式中每個工廠只創建一類具體類的對象,這將會導致系統當中的工廠類過多,這勢必會增加系統的開銷。此時,我們可以考慮將一些相關的具體類組成一個“具體類族”,由同一個工廠來統一生產,這就是我們本文要說的“抽象工廠模式”的基本思想。
也就是工廠方法模式是一個工廠生產一個產品,那麼就會有多個工廠,我們可以將一系列類羣讓同一個工廠去生產,譬如:qq換皮膚的時候,每套皮膚有包括顏色,圖標形狀啊等,這樣每套都可以是由一個工廠來生產,只不過會在工廠中添加生產不同產品的方法而已,也就是原先工廠只有一個生產產品的方法,現在是多個.

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