酷代码 AI
菜单
全部AI  /  热门  /  AI写代码神器
服务商

建造者模式练习 3、kfc套餐 建造者模式可以用于描述kfc 如何创建套餐: 套餐是一个复杂对象,它一般包含主食(如汉堡、鸡肉卷等)和饮料(如果汁、可乐等)等组成部分, 不同的套餐有不同的组成部分,而kfc的服务员可以根据顾客的要求,一步一步装配这些组成部分,构造一份完整的套餐,然后返回给顾客。 类图meal - food:string drink:string + setfood (string food):void+ setdrink (string drink): void + getfood () :string getdrink () string meal kfcwaiter mealbuilder .mb: mealbuilder mb {abstract) + setmealbuilder (mealbuilder mb):void meal:meal= new meal() construct () :meal builddrink ():vold buildfood ():void getmeal (): meal mb.buildfood(); m

为了更好地理解如何使用建造者模式来构建KFC的套餐,我们可以通过具体的Java代码示例来实现这一设计模式。首先,我们需要定义`Meal`类,这是套餐的具体实现,包含食物和饮料。然后,我们将定义一个抽象的`MealBuilder`类,以及几个具体的建造者类来实现这个抽象类。我们将定义一个指挥者类`KFCWaiter`,用来指导具体的建造者如何构建套餐。 1. 定义`Meal`类 ```java public class Meal { private String food; private String drink; public void setFood(String food) { this.food = food; } public void setDrink(String drink) { this.drink = drink; } public String getFood() { return food; } public String getDrink() { return drink; } } ``` 2. 定义抽象的`MealBuilder`类 ```java public abstract class MealBuilder { protected Meal meal; public MealBuilder() { this.meal = new Meal(); } public abstract void buildFood(); public abstract void buildDrink(); public Meal getMeal() { return meal; } } ``` 3. 定义具体的建造者类 3.1 `VegBurgerMealBuilder` ```java public class VegBurgerMealBuilder extends MealBuilder { @Override public void buildFood() { meal.setFood("Vegetable Burger"); } @Override public void buildDrink() { meal.setDrink("Coke"); } } ``` 3.2 `ChickenBurgerMealBuilder` ```java public class ChickenBurgerMealBuilder extends MealBuilder { @Override public void buildFood() { meal.setFood("Chicken Burger"); } @Override public void buildDrink() { meal.setDrink("Pepsi"); } } ``` 4. 定义指挥者类`KFCWaiter` ```java public class KFCWaiter { private MealBuilder mealBuilder; public void setMealBuilder(MealBuilder mb) { this.mealBuilder = mb; } public Meal construct() { mealBuilder.buildFood(); mealBuilder.buildDrink(); return mealBuilder.getMeal(); } } ``` 5. 使用建造者模式 现在,我们可以使用上述类来构建不同的KFC套餐: ```java public class KFCClient { public static void main(String[] args) { KFCWaiter waiter = new KFCWaiter(); // 构建素食套餐 VegBurgerMealBuilder vegBuilder = new VegBurgerMealBuilder(); waiter.setMealBuilder(vegBuilder); Meal vegMeal = waiter.construct(); System.out.println("Veg Meal: Food - " + vegMeal.getFood() + ", Drink - " + vegMeal.getDrink()); // 构建鸡肉套餐 ChickenBurgerMealBuilder chickenBuilder = new ChickenBurgerMealBuilder(); waiter.setMealBuilder(chickenBuilder); Meal chickenMeal = waiter.construct(); System.out.println("Chicken Meal: Food - " + chickenMeal.getFood() + ", Drink - " + chickenMeal.getDrink()); } } ``` 这段代码展示了如何使用建造者模式来创建复杂的对象(如KFC的套餐)。通过将对象的构建与表示分离,我们可以更容易地控制对象的创建过程,同时也使得代码更加清晰和易于维护。 [2024-10-24 17:01:31 | AI写代码神器 | 752点数解答]

相关提问