close

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

 

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

    獅子毛容容 發表在 痞客邦 留言(0) 人氣()