1. 程式人生 > >java設計模式學習筆記--簡單工廠模式

java設計模式學習筆記--簡單工廠模式

1. 什麼是簡單工廠模式

簡單工廠模式是屬於建立型模式,又叫做靜態工廠方法(Static Factory Method)模式。簡單工廠模式是由一個工廠物件決定創建出哪一種產品類的例項。但是嚴格來說,簡單工廠模式不是設計模式,它更像是一種程式設計習慣。

2. 簡單工廠模式的結構

這裡寫圖片描述
(請允許我無恥的偷了百度百科的圖)

從上面的類圖可以看出,簡單工廠模式一共有三種類:
1、抽象產品介面IProduct。
2、具體的產品類Product。
3、工廠類Creator。

3、示例程式碼

簡單工廠模式很簡單,下面直接上示例程式碼。

抽象產品介面:

//披薩介面
public interface
Pizza { //切片 void cut(); //裝盒 void box(); }


具體的產品類:

//這是一個芝士披薩
public class CheesePizza implements Pizza{
    @Override
    public void cut() {
        System.out.println("CheesePizza:cut");
    }

    @Override
    public void box() {
        System.out.println("CheesePizza:box");
    }
}
//蛤蜊披薩
public class ClamPizza implements Pizza {
    @Override
    public void cut() {
        System.out.println("ClamPizza:cut");
    }

    @Override
    public void box() {
        System.out.println("ClamPizza:box");
    }
}


工廠類Creator:

public class SimplePizzaFactory {

    public static
Pizza factory(String type){ Pizza pizza = null; if (type == null) { return pizza; }else if (type.equals("cheese")){ return new CheesePizza(); }else if (type.equals("clam")){ return new ClamPizza(); }else { return pizza; } } }


測試類:

public class Client {

    public static void main(String[] args){
        Pizza cheese = SimplePizzaFactory.factory("cheese");
        Pizza clam = SimplePizzaFactory.factory("clam");

        cheese.box();
        clam.cut();
    }

}

輸出:
這裡寫圖片描述

4、優缺點

到此,簡單工廠模式就結束了,是不是很簡單哪。那麼如此簡單的模式到底有什麼用哪?

優點:簡單工廠模式將建立的程式碼封裝成一個,當以後改變只需要修改這個類就行了。在客戶類中,我們刪除了具體的例項化過程,這就是解耦啊。

缺點:試想一下這種情況,如果我現在有10個具體的披薩類,那是不是要在工程類裡面寫10個else if哪,簡單工廠模式把所有的處理邏輯都放在了這個工廠類中,使得這個類承擔了過大的責任,如果哪天掛了,那麼對整個系統都會有很大的影響。