Design Pattern

Chapter 1 簡單工廠模式

簡單工廠模式(Simple Factory)屬於『創建型模式』,又稱為靜態工廠模式(Static Factory)。 簡單工廠其實不是設計模式,比較像是一種編程習慣。

定義:

通過專門定義一個類來負責創建其他類的實例,被創建的實例通常都具有共同的父類。

組成:

  1. 工廠角色(Factory):負責實現創建所有實力的內部邏輯。
  2. 抽象產品角色(Product):它一般是由具體產品繼承的父類或者實現的接口。
  3. 具體產品角色(ConcreteProduct):工廠類所創建的對象就是此角色的實例。

程式碼:

Step1

public abstract class Shape {   
    public abstract void draw();
}

Step2

public class Circle extends Shape{
    @Override
    public void draw() {
        System.out.println("圓形工廠:圓形");        
    }
}


public class Square extends Shape{
    @Override
    public void draw() {
        System.out.println("方形工廠:正方形");
    }
}

Step3

public class SimpleFactory {
    public static Shape createProduct(String product) {
        if(product.equals("circle")){
            return new Circle();
        }else if(product.equals("square")){
            return new Square();
        }else {
            System.out.println("無此產品");
            return null;
        }
    }
}

Step4

public class Main {
    public static void main(String args[]) {
        SimpleFactory.createProduct("circle").draw();
        SimpleFactory.createProduct("square").draw();
    }
}

Step5(Output)

圓形工廠:圓形
方形工廠:正方形

優點:

  1. 工廠含必要的邏輯判斷,可以決定在什麼時候創建哪一個產品的實例,客戶端可以免除直接創建產品對象的責任。
  2. 可以減少使用者的記憶量。
  3. 可以在不修改客戶端資料的情況下,變更或新增具體產品,提高了系統的靈活性。

缺點:

  1. 工廠集中所有產品的創建邏輯,一旦無法正常使用,整個系統都受影響。
  2. 系統擴展困難,一旦增加新產品就不得不修改工廠邏輯,而在產品多的情況下,可能造成工廠邏輯複雜,不利於系統的擴展與維護。