工廠模式(Factory Method):簡單點(diǎn)講 就是一個(gè)接口 多個(gè)實(shí)現(xiàn) 需要對應(yīng)得實(shí)現(xiàn) 就通過對應(yīng)得條件來獲取
工廠模式是一條創(chuàng)建同一系列產(chǎn)品得流水線
抽象工廠(Abstract Factory):簡單講工廠模式是一條創(chuàng)建同一系列產(chǎn)品得流水線,那么抽象工廠模式就是多條創(chuàng)建不同產(chǎn)品得流水線得一個(gè)集合工廠,
但是,各個(gè)流水線(工廠)之間是相互獨(dú)立得,并且流水線(工廠)是生產(chǎn)一整套有關(guān)聯(lián)或者有依賴得產(chǎn)品(至少有兩種產(chǎn)品)
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.問題來了 單一得產(chǎn)品是做了得 但是他組裝了一臺(tái)怪異得汽車 或許這車不能開 ? carFactory.makeCar("benz","bwm"); //3.把造相同型號(hào)得操作放到一個(gè)工廠里面,也就是工廠里面得工廠 IMakeCarFactory benz = MakeCarFactory.makeCarFactory("benz"); benz.makeCar(); }}//結(jié)果BENZ 車身制造完成BENZ 引擎制造完成benz車 制造完成BENZ 車身制造完成BMW 引擎制造完成benz車 制造完成BENZ 車身制造完成BENZ 引擎制造完成