Java 实现 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 套餐的建造过程。 ######[AI写代码神器 | 741点数解答 | 2024-10-24 16:59:56]
- Java 实现复制粘贴功能:打造简易文本复制粘贴程序(GPT | 1497点数解答 | 2024-08-25 09:40:33)436
- 解决数据库“dm.jdbc.driver.dmexception: 数据溢出”问题的全步骤指南(阿里通义 | 598点数解答 | 2024-10-15 15:48:38)333
- 达梦数据库数据溢出问题排查及多维度解决方法(阿里通义 | 403点数解答 | 2024-10-15 15:48:41)1227
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)380
- 抽象工厂模式:实现 KFC 与 Mdl 快餐产品代工厂的 Java 代码解析(阿里通义 | 863点数解答 | 2024-10-24 17:32:40)315
- Python 代码助力西餐厅“美味两件套”套餐名称生成(字节豆包 | 134点数解答 | 2025-11-02 20:50:10)87
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)350
- "Java Code: Uncovering Stock Statistics through CSV File Reading"(字节豆包 | 66点数解答 | 2024-11-13 15:31:04)345
- 苍溪县:版权赋能驱动县域高质量振兴发展(字节豆包 | 742点数解答 | 2026-03-12 16:34:22)35
- Java 继承实现:重温经典剪刀石头布游戏(字节豆包 | 451点数解答 | 2024-10-20 19:57:58)482
- Java实现日期递增:无数据返20250901,遇20250901返20250902及开发注意要点 (DeepSeek | 242点数解答 | 2025-09-02 11:39:53)94
- 深度解析:Vue中MVVM模式的组成、原理与双向数据绑定优势 (阿里通义 | 249点数解答 | 2023-11-09 00:56:24)276