Java設計模式學習-工廠方法模式
阿新 • • 發佈:2018-12-26
工廠方法模式要點:
- 為了避免簡單工廠模式的缺點 , 不完全滿足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。
簡單工廠模式與工廠方法模式
- 結構複雜度 程式碼複雜度 客戶端程式設計難度 管理上的難度 。
- 以上這幾個 簡單工廠模式都要優於工廠方法模式 。
- 根據設計理論建議 : 工廠方法模式 。 但實際上 , 我們一般都使用簡單工廠模式 。