版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
設(shè)計(jì)模式工廠模式案例《設(shè)計(jì)模式工廠模式案例》篇一工廠模式是一種創(chuàng)建型設(shè)計(jì)模式,它提供了一種創(chuàng)建對象的方法,使得創(chuàng)建對象的過程對客戶端透明。在工廠模式中,客戶端只需要指定它想要?jiǎng)?chuàng)建的對象的類型,而工廠類則負(fù)責(zé)實(shí)際創(chuàng)建該對象。工廠模式的關(guān)鍵在于它解耦了對象的創(chuàng)建過程與其具體實(shí)現(xiàn),使得系統(tǒng)更加靈活和易于擴(kuò)展?!鸢咐攀鲈谖覀兊陌咐?,我們將設(shè)計(jì)一個(gè)汽車制造工廠,這個(gè)工廠能夠根據(jù)客戶的需求生產(chǎn)不同類型的汽車。我們將實(shí)現(xiàn)一個(gè)抽象的汽車工廠,它定義了一個(gè)生產(chǎn)汽車的方法,然后我們創(chuàng)建具體的汽車工廠子類,每個(gè)子類負(fù)責(zé)生產(chǎn)特定類型的汽車?!鹪O(shè)計(jì)類圖```++++++|CarFactory||ToyotaFactory||HondaFactory||||||||createCar()||createCar()||createCar()|||||||++++++```○抽象工廠類(CarFactory)```javapublicabstractclassCarFactory{publicabstractCarcreateCar(Stringtype);}```○具體工廠子類(ToyotaFactory)```javapublicclassToyotaFactoryextendsCarFactory{@OverridepublicCarcreateCar(Stringtype){if(type.equals("sedan")){returnnewToyotaCamry();}elseif(type.equals("suv")){returnnewToyotaRav4();}else{thrownewIllegalArgumentException("Unrecognizedcartype:"+type);}}}```○另一個(gè)具體工廠子類(HondaFactory)```javapublicclassHondaFactoryextendsCarFactory{@OverridepublicCarcreateCar(Stringtype){if(type.equals("sedan")){returnnewHondaAccord();}elseif(type.equals("suv")){returnnewHondaCRV();}else{thrownewIllegalArgumentException("Unrecognizedcartype:"+type);}}}```○汽車接口(Car)```javapublicinterfaceCar{voidstart();voidstop();}```○具體汽車實(shí)現(xiàn)(ToyotaCamry)```javapublicclassToyotaCamryimplementsCar{@Overridepublicvoidstart(){System.out.println("ToyotaCamrystarted.");}@Overridepublicvoidstop(){System.out.println("ToyotaCamrystopped.");}}```○另一個(gè)具體汽車實(shí)現(xiàn)(HondaAccord)```javapublicclassHondaAccordimplementsCar{@Overridepublicvoidstart(){System.out.println("HondaAccordstarted.");}@Overridepublicvoidstop(){System.out.println("HondaAccordstopped.");}}```○使用工廠模式```javapublicclassFactoryPatternDemo{publicstaticvoidmain(String[]args){CarFactorytoyotaFactory=newToyotaFactory();CarFactoryhondaFactory=newHondaFactory();CartoyotaSedan=toyotaFactory.createCar("sedan");toyotaSedan.start();toyotaSedan.stop();CarhondaSedan=hondaFactory.createCar("sedan");hondaSedan.start();hondaSedan.stop();}}```在這個(gè)案例中,`CarFactory`是一個(gè)抽象工廠,它定義了創(chuàng)建汽車的方法`createCar()`。`ToyotaFactory`和`HondaFactory`是具體工廠,它們分別實(shí)現(xiàn)了`createCar()`方法,用于創(chuàng)建特定的汽車類型??蛻舳酥恍枰ㄟ^工廠接口來獲取他們所需的汽車對象,而不需要關(guān)心汽車的創(chuàng)建細(xì)節(jié)。工廠模式在軟件開發(fā)中非常常見,它適用于創(chuàng)建對象的過程復(fù)雜或者需要根據(jù)不同條件來創(chuàng)建《設(shè)計(jì)模式工廠模式案例》篇二工廠模式是一種設(shè)計(jì)模式,它提供了一種創(chuàng)建對象的方法,使得創(chuàng)建對象的過程可以被抽象和隔離。在工廠模式中,我們創(chuàng)建一個(gè)抽象的工廠類,它包含一個(gè)創(chuàng)建產(chǎn)品的抽象方法,而具體的創(chuàng)建過程則由子類來負(fù)責(zé)。這樣,客戶端只需要關(guān)心如何獲取產(chǎn)品,而不需要關(guān)心產(chǎn)品的具體實(shí)現(xiàn)?!鸸S模式的優(yōu)勢-封裝性:工廠模式將產(chǎn)品的創(chuàng)建過程封裝在一個(gè)單獨(dú)的工廠類中,使得客戶端不需要關(guān)心產(chǎn)品的具體實(shí)現(xiàn)。-可擴(kuò)展性:當(dāng)需要增加新的產(chǎn)品時(shí),只需要添加一個(gè)新的工廠子類,而不需要修改現(xiàn)有的代碼。-解耦:客戶端與具體的產(chǎn)品實(shí)現(xiàn)解耦,使得系統(tǒng)更加靈活和可維護(hù)?!鸸S模式的結(jié)構(gòu)工廠模式通常包含以下幾個(gè)角色:-`Product`:抽象產(chǎn)品角色,定義了產(chǎn)品的公共接口。-`ConcreteProduct`:具體產(chǎn)品角色,實(shí)現(xiàn)了`Product`接口,是工廠方法創(chuàng)建的對象。-`Factory`:抽象工廠角色,它定義了一個(gè)創(chuàng)建產(chǎn)品的接口,包含一個(gè)創(chuàng)建產(chǎn)品的抽象方法。-`ConcreteFactory`:具體工廠角色,它實(shí)現(xiàn)了`Factory`接口,并提供了具體產(chǎn)品的創(chuàng)建方法。○工廠模式的案例○汽車制造工廠假設(shè)我們有一個(gè)汽車制造工廠,我們想要?jiǎng)?chuàng)建不同類型的汽車,如轎車、SUV和跑車。每種汽車都有不同的屬性和行為,但它們都繼承自一個(gè)抽象的汽車類。```java//產(chǎn)品角色-抽象汽車publicabstractclassCar{publicabstractvoidstart();publicabstractvoidstop();}//具體產(chǎn)品角色-轎車publicclassSedanextendsCar{@Overridepublicvoidstart(){System.out.println("Sedanstarted.");}@Overridepublicvoidstop(){System.out.println("Sedanstopped.");}}//具體產(chǎn)品角色-SUVpublicclassSuvextendsCar{@Overridepublicvoidstart(){System.out.println("SUVstarted.");}@Overridepublicvoidstop(){System.out.println("SUVstopped.");}}//產(chǎn)品角色-跑車publicclassSportsCarextendsCar{@Overridepublicvoidstart(){System.out.println("SportsCarstarted.");}@Overridepublicvoidstop(){System.out.println("SportsCarstopped.");}}//抽象工廠角色publicinterfaceCarFactory{CarcreateCar();}//具體工廠角色-國內(nèi)工廠publicclassDomesticCarFactoryimplementsCarFactory{@OverridepublicCarcreateCar(){returnnewSedan();}}//具體工廠角色-國外工廠publicclassOverseasCarFactoryimplementsCarFactory{@OverridepublicCarcreateCar(){returnnewSportsCar();}}//客戶端代碼publicclassClient{publicstaticvoidmain(String[]args){CarFactoryfactory=newDomesticCarFactory();Carcar=factory.createCar();car.start();car.stop();}}```在這個(gè)案例中,`Car`是抽象產(chǎn)品角色,`Sedan`、`SUV`和`SportsCar`是具體產(chǎn)品角色
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 成品保護(hù)措施
- Starter Unit 1 Hello Section B 1a - 1b 教案 2024-2025學(xué)年人教版(2024)七年級英語上冊
- 農(nóng)產(chǎn)品購銷員職業(yè)技能競賽理論考試復(fù)習(xí)題庫(濃縮500題)
- 第20章 第48課時(shí) 數(shù)據(jù)的集中趨勢習(xí)題課2023-2024學(xué)年八年級下冊數(shù)學(xué)課時(shí)分層作業(yè)教學(xué)設(shè)計(jì)( 人教版)
- 8 比尾巴(第一課時(shí))教學(xué)設(shè)計(jì)-2024-2025學(xué)年語文一年級上冊統(tǒng)編版
- 五年級語文楚才杯尋找自我獲獎(jiǎng)作文
- 2024-2025學(xué)年新教材高中地理第三單元產(chǎn)業(yè)區(qū)位選擇3服務(wù)業(yè)的區(qū)位選擇練習(xí)含解析魯教版必修2
- 2024年高考地理一輪復(fù)習(xí)第2部分人文地理第11章第2講交通運(yùn)輸方式和布局教案新人教版
- 制冷空調(diào)系統(tǒng)安裝維修工職業(yè)技能競賽考試題庫(含答案)
- 初級餐廳服務(wù)員(5級)職業(yè)鑒定理論考試復(fù)習(xí)題庫(含答案)
- 鋼材購銷合同
- 膿毒癥和膿毒癥休克治療指南解讀
- 施工組織設(shè)計(jì)(畢業(yè)設(shè)計(jì))
- 喉痙攣的麻醉處理演示文稿
- 造價(jià)部經(jīng)理績效考核指標(biāo)評分細(xì)則(附表)
- 三叉神經(jīng)痛微球囊壓迫術(shù)的護(hù)理
- 《網(wǎng)店開設(shè)》課程標(biāo)準(zhǔn)
- 新編簡明英語語言學(xué)教程戴煒棟第1-3章課后練習(xí)題答案
- 分子實(shí)驗(yàn)室的污染預(yù)防與處理
- 抗結(jié)核藥物及不良反應(yīng)
- 文化強(qiáng)國與文化自信+說課稿 高中政治統(tǒng)編版必修四哲學(xué)與文化
評論
0/150
提交評論