二維碼
微世推網(wǎng)

掃一掃關(guān)注

當(dāng)前位置: 首頁 » 快聞?lì)^條 » 動(dòng)態(tài)資訊 » 正文

創(chuàng)建型設(shè)計(jì)模式_工廠模式和抽象工廠模式

放大字體  縮小字體 發(fā)布日期:2022-01-13 16:01:17    作者:郭鑫哲    瀏覽次數(shù):197
導(dǎo)讀

工廠模式(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)品得流

工廠模式(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 引擎制造完成

 
(文/郭鑫哲)
免責(zé)聲明
本文為郭鑫哲原創(chuàng)作品?作者: 郭鑫哲。歡迎轉(zhuǎn)載,轉(zhuǎn)載請注明原文出處:http://m.jib360.com/news/show-244031.html 。本文僅代表作者個(gè)人觀點(diǎn),本站未對其內(nèi)容進(jìn)行核實(shí),請讀者僅做參考,如若文中涉及有違公德、觸犯法律的內(nèi)容,一經(jīng)發(fā)現(xiàn),立即刪除,作者需自行承擔(dān)相應(yīng)責(zé)任。涉及到版權(quán)或其他問題,請及時(shí)聯(lián)系我們郵件:weilaitui@qq.com。
 

Copyright?2015-2023 粵公網(wǎng)安備 44030702000869號(hào)

粵ICP備16078936號(hào)

微信

關(guān)注
微信

微信二維碼

WAP二維碼

客服

聯(lián)系
客服

聯(lián)系客服:

24在線QQ: 770665880

客服電話: 020-82301567

E_mail郵箱: weilaitui@qq.com

微信公眾號(hào): weishitui

韓瑞 小英 張澤

工作時(shí)間:

周一至周五: 08:00 - 24:00

反饋

用戶
反饋