更新時間:2020-09-17 15:03:48 來源:動力節點 瀏覽1577次
一.簡單工廠模式
簡單工廠模式就是把對類的創建初始化全都交給一個工廠來執行,而用戶不需要去關心創建的過程是什么樣的,只用告訴工廠我想要什么就行了。而這種方法的缺點也很明顯,違背了設計模式的開閉原則,因為如果你要增加工廠可以初始化的類的時候,你必須對工廠進行改建
代碼如下:
package com.long88.ad.test; interface Car { public void getCar(); }
package com.long88.ad.test; public class BMW implements Car{ @Override public void getCar() { System.out.printf("來一輛BMW!"); } }
package com.long88.ad.test; public class BYD implements Car { @Override public void getCar() { System.out.printf("來一輛BYD!"); } }
package com.long88.ad.test; public class CarFactor { public static Car carFactor(Class tClass){ if (tClass.getName().equals(BMW.class.getName())){ return new BMW(); } if (tClass.getName().equals(BYD.class.getName())){ return new BYD(); } return null; } }
package com.long88.ad.test; public class testFactory { public static void main(String[] args) { Car car = CarFactor.carFactor(BYD.class); car.getCar(); } }
結果如圖:
二. 工廠方法模式
設計一個工廠的接口,你想要什么東西,就寫個類繼承于這個工廠,這樣就不用修改什么,直接添加就行了。就相當于,我這個工廠是用來生汽車的,而要什么品牌的汽車具體分到了每個車間,如果新多了一種品牌的汽車,直接新增一個車間就行了。那么問題又來了,如果想要生產大炮怎么辦?
代碼如下:
package com.long88.ad.test; interface Car { public void getCar(); }
package com.long88.ad.test; public class BMW implements Car{ @Override public void getCar() { System.out.printf("來一輛BMW!"); } }
package com.long88.ad.test; public class BYD implements Car { @Override public void getCar() { System.out.printf("來一輛BYD!"); } }
//抽象工廠 interface CarFactory{ public Car getCarByFactory(); }
// BMW 具體工廠類 class BMWfactory implements CarFactory{ @Override public Car getCarByFactory() { return new BMW(); } }
// BYD 具體工廠類 class BYD factory implements CarFactory{ @Override public Car getCarByFactory() { return new BYD (); } }
public class TestFactory { public static void main(String[] args) { Car bmw= new BMWfactory().getCarByFactory(); bmw.getCar(); } }
以上就是對“Java工廠模式菜鳥教程,快學起來呀”的介紹,希望對大家有所幫助,還想學習更多關于Java的課程,可以關注動力節點官網Java視頻教程,免費下載學習。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習