1. 程式人生 > >Java設計模式學習-工廠方法模式

Java設計模式學習-工廠方法模式

工廠方法模式要點:

  • 為了避免簡單工廠模式的缺點 , 不完全滿足OCP 。
  • 工廠出那個方法模式 和 簡單工廠模式 最大不同在於 , 簡單工廠模式只有一個 (對於一個專案或者一個獨立模組而言 ) 工廠類, 而工廠方法模式有一組實現了相同介面的工廠類 。

 

1), 建立Car類介面

/**建立車類  根類介面
 * @author 曉電腦
 */
public interface Car {
    void create();
}

2), 建立奧迪類與比亞迪類

/**奧迪類
 * @author 曉電腦
 */
public class AudiCar implements Car {
    @Override
    public void create() {
        System.out.println("奧迪車再跑");
    }
}

/**比亞迪 工廠類
 * @author 曉電腦
 */
public class BydFactoryCar implements CarFactory {
    @Override
    public Car createCar() {
        return new BydCar();
    }
}

3),建立工廠介面

/**車類建立者 介面
 * @author 曉電腦
 */
public interface CarFactory {
    Car createCar();
}

4), 建立奧迪工廠類和比亞迪工廠類 

/**奧迪車工廠類
 * @author 曉電腦
 */
public class AudiFactoryCar implements CarFactory {
    @Override
    public Car createCar() {
        return new AudiCar();
    }
}

/**比亞迪 工廠類
 * @author 曉電腦
 */
public class BydFactoryCar implements CarFactory {
    @Override
    public Car createCar() {
        return new BydCar();
    }
}

5),建立Client類進行測試

/**測試客戶端
 * @author 曉電腦
 */
public class Client {
    public static void main (String[] args) {
        AudiFactoryCar car = new AudiFactoryCar();
        Car car1 = car.createCar();
        BydFactoryCar factoryCar = new BydFactoryCar();
        Car car2 = factoryCar.createCar();
        car1.create();
        car2.create();
    }
}

 

繪製 uml 類圖 如下

                    

 

方法工廠模式彌補了簡單工廠模式的缺點,在不修改原來程式碼的基礎上進行擴充套件,如果現在加入了賓士類,只用新增相應的賓士實現類,與賓士工廠類,滿足了OCP。

 

簡單工廠模式與工廠方法模式

  • 結構複雜度 程式碼複雜度  客戶端程式設計難度  管理上的難度  。
  • 以上這幾個 簡單工廠模式都要優於工廠方法模式 。
  • 根據設計理論建議 : 工廠方法模式 。 但實際上 , 我們一般都使用簡單工廠模式 。