一、實(shí)驗(yàn)?zāi)康模?/strong> 1) 掌握建造者模式(Builder)的特點(diǎn) 2) 分析具體問(wèn)題,使用建造者模式進(jìn)行設(shè)計(jì)。 二、實(shí)驗(yàn)環(huán)境: Eclipse 三、實(shí)驗(yàn)內(nèi)容: (寫出主要的內(nèi)容) 實(shí)例:KFC套餐 建造者模式可以用于描述KFC如何創(chuàng)建套餐:套餐是一個(gè)復(fù)雜對(duì)象,它一般包含主食(如漢堡、雞肉卷等)和飲料(如果汁、可樂(lè)等)等組成部分,不同的套餐有不同的組成部分,而KFC的服務(wù)員可以根據(jù)顧客的要求,一步一步裝配這些組成部分,構(gòu)造一份完整的套餐,然后返回給顧客。利用建造者模式設(shè)計(jì),用JAVA語(yǔ)言實(shí)現(xiàn)? (或C#控制臺(tái)應(yīng)用程序?qū)崿F(xiàn))。繪制該模式的UML圖。 【模式UML圖】 ? (1) Meal(套餐類) public class Meal { ??? private String pasta; ??? private String drink; ??? private String dishes; ??? public void setPasta(String pasta){ ??????? this.pasta = pasta; ??? } ??? public void setDrink(String drink){ ??????? this.drink = drink; ??? } ??? public void setDishes(String dishes){ ??????? this.dishes = dishes; ??? } ??? public String getPasta(){ ??????? return(this.pasta); ??? } ??? public String getDrink(){ ??????? return(this.drink); ??? } ??? public String getDishes(){ ??????? return(this.dishes); ??? } ? } (2)抽象建造者類MealBuilder(套餐建造者類) public abstract class MealBuilder { ??? Meal meal=new Meal(); ??? public abstract void buildPasta(); ??? public abstract void buildDrink(); ??? public abstract void buildDishes(); ??? public Meal getMeal() { //這道一個(gè)菜單,這個(gè)是返回 ??????? return meal ; ??? } ??? } (3)具體建造者類SubMealBuilderA()(A套餐建造者類) public class SubMealBuilderA extends MealBuilder { ??????? public void buildPasta() ??????? { ??????????? meal.setPasta("一份面條"); ??????? } ??????? public void buildDrink() ??????? { ??????????? meal.setDrink("一瓶橙汁"); ??????? } ??????? public void buildDishes() ??????? { ??????????? meal.setDishes("一份番茄炒雞蛋"); ??????? } } (4) 具體建造者類SubMealBuilderB()(B套餐建造者類) public class SubMealBuilderB extends MealBuilder { ??????? public void buildPasta() ??????? { ??????????? meal.setPasta("一份米飯"); ??????? } ??????? public void buildDrink() ??????? { ??????????? meal.setDrink("一瓶雪碧"); ??????? } ??????? public void buildDishes() ??????? { ??????????? meal.setDishes("一份芹菜炒肉"); ??????? } (5)指揮者類Waiter(服務(wù)員類) public class Waiter { ??? private MealBuilder mb; ??? public void setMealBuilder(MealBuilder mb)//調(diào)用這是從那里調(diào)用而來(lái),當(dāng)然是等待服務(wù)了 ??? { ??????? this.mb = mb; ??? } ??? public Meal construct() ??? { ??????? mb.buildPasta(); ??????? mb.buildDrink(); ??????? mb.buildDishes(); ??????? return mb.getMeal(); ??? } } (6)客戶端測(cè)試類Client public class Waiter { ??? private MealBuilder mb; ??? public void setMealBuilder(MealBuilder mb)//調(diào)用這是從那里調(diào)用而來(lái),當(dāng)然是等待服務(wù)了 ??? { ??????? this.mb = mb; ??? } ??? public Meal construct() ??? { ??????? mb.buildPasta(); ??????? mb.buildDrink(); ??????? mb.buildDishes(); ??????? return mb.getMeal(); ??? } } 【模式代碼(JAVA語(yǔ)言實(shí)現(xiàn))】 【運(yùn)行截圖】 具體建造者類SubMealBuilderA()(A套餐建造者類) 具體建造者類SubMealBuilderB()(B套餐建造者類) 四、心得體會(huì): 通過(guò)這次實(shí)驗(yàn),讓我學(xué)會(huì)掌握建造者模式(Builder)的特點(diǎn),分析具體問(wèn)題,使用建造者模式進(jìn)行設(shè)計(jì)。也稱生成器模式,生成器模式將所建造的產(chǎn)品(通常是一個(gè)復(fù)合體)最后一次性返回。 來(lái)源:http://www./content-4-163301.html |
|