一、实验目的: 1) 掌握建造者模式(Builder)的特点 2) 分析具体问题,使用建造者模式进行设计。 二、实验环境: Eclipse 三、实验内容: (写出主要的内容) 实例:KFC套餐 建造者模式可以用于描述KFC如何创建套餐:套餐是一个复杂对象,它一般包含主食(如汉堡、鸡肉卷等)和饮料(如果汁、可乐等)等组成部分,不同的套餐有不同的组成部分,而KFC的服务员可以根据顾客的要求,一步一步装配这些组成部分,构造一份完整的套餐,然后返回给顾客。利用建造者模式设计,用JAVA语言实现 (或C#控制台应用程序实现)。绘制该模式的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() { //这道一个菜单,这个是返回 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(服务员类) public class Waiter { private MealBuilder mb; public void setMealBuilder(MealBuilder mb)//调用这是从那里调用而来,当然是等待服务了 { this.mb = mb; } public Meal construct() { mb.buildPasta(); mb.buildDrink(); mb.buildDishes(); return mb.getMeal(); } } (6)客户端测试类Client public class Waiter { private MealBuilder mb; public void setMealBuilder(MealBuilder mb)//调用这是从那里调用而来,当然是等待服务了 { this.mb = mb; } public Meal construct() { mb.buildPasta(); mb.buildDrink(); mb.buildDishes(); return mb.getMeal(); } } 【模式代码(JAVA语言实现)】 【运行截图】 具体建造者类SubMealBuilderA()(A套餐建造者类) 具体建造者类SubMealBuilderB()(B套餐建造者类) 四、心得体会: 通过这次实验,让我学会掌握建造者模式(Builder)的特点,分析具体问题,使用建造者模式进行设计。也称生成器模式,生成器模式将所建造的产品(通常是一个复合体)最后一次性返回。 来源:http://www./content-4-163301.html |
|