package com.xgp.company.第二種_工廠模式.簡單工廠模式; public interface Car { void name(); }
package com.xgp.company.第二種_工廠模式.簡單工廠模式; public class WuLing implements Car { @Override public void name() { System.out.println("五凌宏觀"); } }
package com.xgp.company.第二種_工廠模式.簡單工廠模式; public class Tesla implements Car { @Override public void name() { System.out.println("特斯拉"); } }
package com.xgp.company.第二種_工廠模式.簡單工廠模式; /** * 簡單工廠模式,又成爲靜態工廠模式 * 弊端:增長一個新產品時,若是你不修改代碼,作不到 */ /** * 汽車工廠 */ public class CarFactory { public static Car getCar(String car) { if("五凌".equals(car)) return new WuLing(); if("特斯拉".equals(car)) return new Tesla(); return null; } /** * 第二種方式 * @return */ public static Car getWuLing() { return new WuLing(); } public static Car getTesla() { return new Tesla(); } }
package com.xgp.company.第二種_工廠模式.簡單工廠模式; /** * 買車 */ public class Consumer { /* *//** * 傳統的方式 * @param args *//* public static void main(String[] args) { //弊端:須要瞭解接口和全部的實現類 Car car1 = new WuLing(); Car car2 = new Tesla(); car1.name(); car2.name(); }*/ /** * 簡單工廠模式 * @param args */ public static void main(String[] args) { Car car1 = CarFactory.getCar("五凌"); Car car2 = CarFactory.getCar("特斯拉"); car1.name(); car2.name(); } }
package com.xgp.company.第二種_工廠模式.簡單工廠模式; /** * 弊端:增長實現類時須要改工廠類的代碼 */ public class Dazhong implements Car { @Override public void name() { System.out.println("大衆"); } }
五凌宏觀 特斯拉
package com.xgp.company.第二種_工廠模式.工廠方法模式; public interface Car { void name(); }
package com.xgp.company.第二種_工廠模式.工廠方法模式; public class WuLing implements Car { @Override public void name() { System.out.println("五凌宏觀"); } }
package com.xgp.company.第二種_工廠模式.工廠方法模式; public class Tesla implements Car { @Override public void name() { System.out.println("特斯拉"); } }
package com.xgp.company.第二種_工廠模式.工廠方法模式; public interface CarFactory { Car getCar(); }
package com.xgp.company.第二種_工廠模式.工廠方法模式; public class WuLingFactory implements CarFactory { @Override public Car getCar() { return new WuLing(); } }
package com.xgp.company.第二種_工廠模式.工廠方法模式; public class TeslaFactory implements CarFactory { @Override public Car getCar() { return new Tesla(); } }
package com.xgp.company.第二種_工廠模式.工廠方法模式; /** * 弊端:增長實現類時須要改工廠類的代碼 */ public class Dazhong implements Car { @Override public void name() { System.out.println("大衆"); } }
package com.xgp.company.第二種_工廠模式.工廠方法模式; public class DazhongFactory implements CarFactory { @Override public Car getCar() { return new Dazhong(); } }
package com.xgp.company.第二種_工廠模式.工廠方法模式; /** * 買車 */ public class Consumer { public static void main(String[] args) { Car car1 = new WuLingFactory().getCar(); Car car2 = new TeslaFactory().getCar(); Car car3 = new DazhongFactory().getCar(); car1.name(); car2.name(); car3.name(); } //根據設計原則:工廠方法模式 //更據實際業務:簡單工廠模式 }
package com.xgp.company.第二種_工廠模式.抽象工廠模式; /** * 抽象產品工廠 */ public interface IProductFactory { //生產手機 IPhoneProduct iphoneProduct(); //生產路由器 IRouterProduct routerProduct(); }
package com.xgp.company.第二種_工廠模式.抽象工廠模式; /** * 手機接口 */ public interface IPhoneProduct { void start(); //開機 void shutdown(); //關機 void callup(); //打電話 void sendSMS(); //發短信 }
package com.xgp.company.第二種_工廠模式.抽象工廠模式; /** * 路由器產品接口 */ public interface IRouterProduct { void start(); //開機 void shutdown(); //關機 void openWifi(); //打開網絡 void setting(); //設置參數 }
package com.xgp.company.第二種_工廠模式.抽象工廠模式; public class XiaomiFactory implements IProductFactory { @Override public IPhoneProduct iphoneProduct() { return new XiaomiPhone(); } @Override public IRouterProduct routerProduct() { return new XiaomiRouter(); } }
package com.xgp.company.第二種_工廠模式.抽象工廠模式; /** * 小米手機 */ public class XiaomiPhone implements IPhoneProduct { @Override public void start() { System.out.println("開啓小米手機"); } @Override public void shutdown() { System.out.println("關閉小米手機"); } @Override public void callup() { System.out.println("小米打電話"); } @Override public void sendSMS() { System.out.println("小米發短信"); } }
package com.xgp.company.第二種_工廠模式.抽象工廠模式; /** * 小米路由器 */ public class XiaomiRouter implements IRouterProduct { @Override public void start() { System.out.println("開啓小米路由器"); } @Override public void shutdown() { System.out.println("關閉小米路由器"); } @Override public void openWifi() { System.out.println("小米網絡"); } @Override public void setting() { System.out.println("小米參數"); } }
package com.xgp.company.第二種_工廠模式.抽象工廠模式; public class HuaweiFactory implements IProductFactory { @Override public IPhoneProduct iphoneProduct() { return new HuaweiPhone(); } @Override public IRouterProduct routerProduct() { return new HuaweiRouter(); } }
package com.xgp.company.第二種_工廠模式.抽象工廠模式; /** * 華爲手機 */ public class HuaweiPhone implements IPhoneProduct { @Override public void start() { System.out.println("開啓華爲手機"); } @Override public void shutdown() { System.out.println("關閉華爲手機"); } @Override public void callup() { System.out.println("華爲手機打電話"); } @Override public void sendSMS() { System.out.println("華爲手機發短信"); } }
package com.xgp.company.第二種_工廠模式.抽象工廠模式; public class HuaweiRouter implements IRouterProduct { @Override public void start() { System.out.println("開啓華爲路由器"); } @Override public void shutdown() { System.out.println("關閉華爲路由器"); } @Override public void openWifi() { System.out.println("華爲網絡"); } @Override public void setting() { System.out.println("華爲參數"); } }
package com.xgp.company.第二種_工廠模式.抽象工廠模式; public class Client { public static void main(String[] args) { System.out.println("================小米系列產品================="); //小米工廠 XiaomiFactory xiaomiFactory = new XiaomiFactory(); //小米手機 IPhoneProduct iphoneProduct = xiaomiFactory.iphoneProduct(); iphoneProduct.start(); iphoneProduct.callup(); iphoneProduct.sendSMS(); iphoneProduct.shutdown(); //小米路由器 IRouterProduct routerProduct = xiaomiFactory.routerProduct(); routerProduct.start(); routerProduct.openWifi(); routerProduct.setting(); routerProduct.shutdown(); System.out.println("================華爲系列產品================="); //華爲工廠 HuaweiFactory huaweiFactory = new HuaweiFactory(); //華爲手機 iphoneProduct = huaweiFactory.iphoneProduct(); iphoneProduct.start(); iphoneProduct.callup(); iphoneProduct.sendSMS(); iphoneProduct.shutdown(); //華爲路由器 routerProduct = huaweiFactory.routerProduct(); routerProduct.start(); routerProduct.openWifi(); routerProduct.setting(); routerProduct.shutdown(); } }
================小米系列產品================= 開啓小米手機 小米打電話 小米發短信 關閉小米手機 開啓小米路由器 小米網絡 小米參數 關閉小米路由器 ================華爲系列產品================= 開啓華爲手機 華爲手機打電話 華爲手機發短信 關閉華爲手機 開啓華爲路由器 華爲網絡 華爲參數 關閉華爲路由器 進程完成,退出碼 0