工厂模式(Factory Method):简单点讲 就是一个接口 多个实现 需要对应得实现 就通过对应得条件来获取
工厂模式是一条创建同一系列产品得流水线
抽象工厂(Abstract Factory):简单讲工厂模式是一条创建同一系列产品得流水线,那么抽象工厂模式就是多条创建不同产品得流水线得一个集合工厂,
但是,各个流水线(工厂)之间是相互独立得,并且流水线(工厂)是生产一整套有关联或者有依赖得产品(至少有两种产品)
package com.wangguo.factory;public interface Engine { void make();}class BmwEngine implements Engine{ 等Override public void make() { System.out.println("BMW 引擎制造完成"); }}class BenzEngine implements Engine{ 等Override public void make() { System.out.println("BENZ 引擎制造完成"); }}class EngineFactory{ static Engine getEngine(String name){ if ("bwm".equals(name)) { return new BmwEngine(); }else if("benz".equals(name)){ return new BenzEngine(); } return null; }}
package com.wangguo.factory;public interface Body { void make();}class BmwBody implements Body{ 等Override public void make() { System.out.println("BMW 车身制造完成"); }}class BenzBody implements Body{ 等Override public void make() { System.out.println("BENZ 车身制造完成"); }}class BodyFactory{ static Body getBody(String name){ if ("bwm".equals(name)) { return new BmwBody(); }else if("benz".equals(name)){ return new BenzBody(); } return null; }}
package com.wangguo.factory;public class CarFactory { private Body body; private Engine engine; public void makeCar(String bodyName,String engineName){ body = BodyFactory.getBody(bodyName); body.make(); Engine engine = EngineFactory.getEngine(engineName); engine.make(); System.out.println(bodyName +"车 制造完成"); }}
package com.wangguo.factory;public interface IMakeCarFactory { void makeCar();}class MakeCarFactory { static IMakeCarFactory makeCarFactory(String name) { if ("benz".equals(name)) { return new BenzMakeFactory(); } else if ("bmw".equals(name)) { return new BmwMakeFactory(); } else { return null; } }}class BenzMakeFactory implements IMakeCarFactory { static Engine engine = new BenzEngine(); static Body body = new BenzBody(); 等Override public void makeCar() { body.make(); engine.make(); }}class BmwMakeFactory implements IMakeCarFactory { static Engine engine = new BmwEngine(); static Body body = new BmwBody(); 等Override public void makeCar() { body.make(); engine.make(); }}
package com.wangguo.factory;public class FactoryShow { public static void main(String[] args) { CarFactory carFactory = new CarFactory(); //1.用户需要一辆benz车 carFactory.makeCar("benz","benz"); //2.问题来了 单一得产品是做了得 但是他组装了一台怪异得汽车 或许这车不能开 ? carFactory.makeCar("benz","bwm"); //3.把造相同型号得操作放到一个工厂里面,也就是工厂里面得工厂 IMakeCarFactory benz = MakeCarFactory.makeCarFactory("benz"); benz.makeCar(); }}//结果BENZ 车身制造完成BENZ 引擎制造完成benz车 制造完成BENZ 车身制造完成BMW 引擎制造完成benz车 制造完成BENZ 车身制造完成BENZ 引擎制造完成


