抽象工廠和建造者模式_第1頁
抽象工廠和建造者模式_第2頁
抽象工廠和建造者模式_第3頁
抽象工廠和建造者模式_第4頁
抽象工廠和建造者模式_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

實驗8抽象工廠和建造者模式一、實驗?zāi)康?、掌握抽象工廠模式的概念、模式結(jié)構(gòu)、適用場景、優(yōu)點和缺點。3、掌握建造者模式的概念、模式結(jié)構(gòu)、適用場景、優(yōu)點和缺點。二、實驗環(huán)境Windows操作系統(tǒng),RationalRose,eclipse>Myeclipse,VSStudio,記事本等等。三、實驗內(nèi)容1、抽象工廠模式:為創(chuàng)建一組相關(guān)或相互依賴的對象提供一個接口,而且無需指定它們的具體類。抽象工廠的模式圖如下所示。模式中包含4個角色,抽象工廠、具體工廠、

抽象產(chǎn)品和具體產(chǎn)品。題目描述:我們在上一節(jié)講了女蝸造人的故事。人是造出來了,世界也熱鬧了,可是低頭一看,都是清一色的類型,缺少關(guān)愛、仇恨、喜怒哀樂等情緒,人類的生命太平淡了,女蝸一想,猛然一拍腦袋,記給人類定義性別了,那怎么辦?由于女蝸之前的準備工作花費了非常大的精力,比如準備黃土,準備八卦爐等,從頭開始建立所有的事物也是不可能的,那就想在現(xiàn)有的條件下重新造人,盡可能舊物利用嘛。怎么才能讓人類有愛有恨呢?是神仙當然辦法的了,定義互斥的性別,然后在每個個體中埋下一顆種子:異性相吸,成熟后就一定會去找個異性(這就是我們說的愛情原動力)。從設(shè)計角度來看,一個具體的對象通過兩個坐標就可以確定:膚色和性別。朕色▲黃黑,曰黃黑,曰產(chǎn)品類分析完畢了,生產(chǎn)的工廠類該(八卦爐)怎么改造呢?只有一個生產(chǎn)設(shè)備,要么生產(chǎn)出全都是男性,要么都是女性,那不行呀,這么大的翻天覆地的改造就是為了產(chǎn)生不同性別的人類。有辦法了!把目前已經(jīng)有的生產(chǎn)設(shè)備一一八卦爐拆開,于是女蝸就使用了''八卦拷貝術(shù)〃,把原先的八卦爐一個變兩個,并且略加修改,就成了女性八卦爐(只生產(chǎn)女性人種)和男性八卦爐(只生產(chǎn)男性人種),于是乎女蝸就開始準備生產(chǎn)了。根據(jù)描述,請使用抽象工廠模式,畫出UML類圖,實現(xiàn)題目描述的功能。UML類圖:

代碼Humanjavapackagelab?9_l;publicinterfaceHuman{H獲取人類的膚色voidgetColor();H語言voidlanguage();〃性別voidgetSex();BlackPeople.javaWhitePeople.javaYellowPeople.javapackageLab09_l;〃黃種人 —elloiAjPeopleimplementsHuman{elloiAjPeopleimplementsHuman{@OverridepublicvoidgetColor()(//TODOAuto-generatedmethodstubSystem.out.printin("YelloiAjPeople");@OverridepublicvoidLanguage()(//TODOAuto-generatedmethodstubSystern.out.print!n("YelloiAiPeoplespeakChinese!

FemaleBlack.javapackageLab?9_l;publicclassFemaleBlackextendsBlackPeople{|@Overridepublicvoidget5ex(){//TODOAuto-generatedmethodstub

System.out.printin("FemaleBlack!");}MaleBlack.javapackagelab?9_l;publicclassBlackPeoplepublicclassBlackPeoplepublicvoidgetSex(){//TODO//TODOAuto-generatedmethodstubSystem.out.printin("MaleBlack!");FemaleWhite.javaMaleWhite.javapackagelab?9_l;publicclasspublicclassaleWhiteex±endsWhitePeople{@OverridepublicvoidgetSexf){//TODOAuto-generatedmethodstubSystem.out.printin("MaieWhite!");FemaleYellow.javapublicclassFemaLeYelLowextendsYellowPeopLe{I@Overridepublicvoidget5ex(){//TODOAuto-generatedmethodstubSystem.out.printLn("FemaleYellow!;MaleYellow.javapackageLab09_l;IabO9/src/la aIeWhite.javapublicclassMaleYellowex±endsYellowPeople{I^JOverridepublicvoidgetSex(){//TODOAuto-generatedmethodstubSystem.out.println("MaleYellowI");HumanFactory.javapackageLab09_l;publicinterfacepublicHumanpublicHumanpublicHumanHumanFa廿wycreateBlack();createWhite();createYellow();FemaleFactory.javapublicclassimplementsHumanFactory{publicclasspublicHumancreateBLack(){//TODOAuto-generatedmethodstubreturnnewFemaleBlack();publicHumancreatel/Jhite(){//TODOAuto-generatedmethodstubreturnneuFemaleWhite();publicHumancreateYellow(){//TODOAuto-generatedmethodstubreturnnewFernaLeYellow();MaleFactory.javapackagelab?9_l;publicclassJpublicclassJpublicHumancreateBlack(){//TODOAuto-generatedmethodstubreturnnewMaleBlack();}publicHumancreatel/dhite(){//TODOAuto-generatedmethodstubreturnnewMaleWhite();publicHumancreateYellow(){//TODOAuto-generatedmethodstubreturnneuMaleYellow();2、建造者模式應(yīng)用:將一個復(fù)雜對象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示。建造者模式的通用類圖:

Product產(chǎn)品類:具體產(chǎn)品。Builder抽象建造者:是為創(chuàng)建一個Product對象的各個部件指定的抽象接口。ConcreteBuilder具體建造者:實現(xiàn)Builder接口,構(gòu)造和裝配各個部件。Director指揮者:用來根據(jù)用戶的需求構(gòu)建對象。題目描述:產(chǎn)品:不同風(fēng)格的house,有中式house、歐式house等,(假設(shè)在house類中建立一個私有的String類型的字段來描述house的風(fēng)格),試用Builder模式建造中式house和歐式house。并創(chuàng)建客戶端,建造一所中式house和一所歐式house,并輸出house的風(fēng)格。(Builder模式典型UML類圖如下)代碼:House.javapackagelab?9_2;publicclassHousepublicclassHouseprivateStringHouseStyle;publicStringgetHouseStyle(){returnHouseStyle;publicStringgetHouseStyle(){returnHouseStyle;}publicvoidsetHouseStyle(StringhouseStyle){HouseStyle=houseStyle;Bulider.javapackagelab?9_2;publicabstractclassBuilder//protectedHousehouse=newabstractvoidbuildf);abstractHousegetHouse();//{returnhouse;}publicabstractclassBuilder//protectedHousehouse=newabstractvoidbuildf);abstractHousegetHouse();//{returnhouse;}House();BuildEurope.javapackageLab09_2;BuildEuropeex±endsBuilder{publicclassHousehouse=neuHouse();voidbuild(){//TODOAuto-generatedmethodstubhouse.setHouseStyle("EuropestyleI")Syst

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論