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