酷代码 AI
菜单
服务商

建造者模式练习 3、kfc套餐 建造者模式可以用于描述kfc 如何创建套餐: 套餐是一个复杂对象,它一般包含主食(如汉堡、鸡肉卷等)和饮料(如果汁、可乐等)等组成部分, 不同的套餐有不同的组成部分,而kfc的服务员可以根据顾客的要求,一步一步装配这些组成部分,构造一份完整的套餐,然后返回给顾客。

以下是使用 Java 实现 KFC 套餐的建造者模式示例代码: ```java import java.util.ArrayList; import java.util.List; // 套餐食物枚举 enum Food { HAMBURGER, CHICKEN_ROLL, JUICE, COKE } // 套餐类 class KfcCombo { private List<Food> foods; public KfcCombo() { foods = new ArrayList<>(); } public void addFood(Food food) { foods.add(food); } @Override public String toString() { StringBuilder sb = new StringBuilder("KFC Combo: "); for (Food food : foods) { sb.append(food.name()).append(" "); } return sb.toString(); } } // 套餐建造者抽象类 abstract class KfcComboBuilder { protected KfcCombo combo; public KfcCombo getCombo() { return combo; } public void createNewCombo() { combo = new KfcCombo(); } public abstract void buildMainDish(); public abstract void buildDrink(); } // 具体的套餐建造者 1 class Combo1Builder extends KfcComboBuilder { @Override public void buildMainDish() { combo.addFood(Food.HAMBURGER); } @Override public void buildDrink() { combo.addFood(Food.JUICE); } } // 具体的套餐建造者 2 class Combo2Builder extends KfcComboBuilder { @Override public void buildMainDish() { combo.addFood(Food.CHICKEN_ROLL); } @Override public void buildDrink() { combo.addFood(Food.COKE); } } // 服务员类 class Waiter { private KfcComboBuilder builder; public Waiter(KfcComboBuilder builder) { this.builder = builder; } public KfcCombo constructCombo() { builder.createNewCombo(); builder.buildMainDish(); builder.buildDrink(); return builder.getCombo(); } } public class KfcBuilderPatternExample { public static void main(String[] args) { // 使用套餐 1 的建造者 KfcComboBuilder combo1Builder = new Combo1Builder(); Waiter waiter1 = new Waiter(combo1Builder); KfcCombo combo1 = waiter1.constructCombo(); System.out.println(combo1); // 使用套餐 2 的建造者 KfcComboBuilder combo2Builder = new Combo2Builder(); Waiter waiter2 = new Waiter(combo2Builder); KfcCombo combo2 = waiter2.constructCombo(); System.out.println(combo2); } } ``` 在上述代码中,我们定义了`KfcCombo`表示套餐,`KfcComboBuilder`作为套餐建造者的抽象类,`Combo1Builder`和`Combo2Builder`是具体的建造者,`Waiter`类负责根据建造者来构建套餐。通过这种方式,实现了 KFC 套餐的建造过程。 [2024-10-24 16:59:56 | AI写代码神器 | 741点数解答]

相关提问
实用工具查看更多
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]
数独游戏 [娱乐类]
经典推箱子 [娱乐类]
AI摸鱼五子棋 [娱乐类]