設(shè)計(jì)模式工廠模式案例_第1頁
設(shè)計(jì)模式工廠模式案例_第2頁
設(shè)計(jì)模式工廠模式案例_第3頁
設(shè)計(jì)模式工廠模式案例_第4頁
設(shè)計(jì)模式工廠模式案例_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論