抽象工厂模式:实现 KFC、MDL 快餐代工,轻松应对未来扩展!
好的,下面是一个使用抽象工厂模式实现的示例代码。这个模式允许我们为不同的快餐店创建一系列相关的产品对象,而无需指定具体的类。 抽象产品接口 首先,定义抽象产品接口: ```java // 汉堡接口 public interface Burger { String getName(); } // 炸鸡接口 public interface Chicken { String getName(); } // 饮料接口 public interface Drink { String getName(); } ``` 具体产品类 接下来,定义具体的产品类: ```java // KFC的具体产品 public class KFCBurger implements Burger { @Override public String getName() { return "鸡肉堡"; } } public class KFCChicken implements Chicken { @Override public String getName() { return "奥尔良鸡腿"; } } public class KFCDrink implements Drink { @Override public String getName() { return "咖啡"; } } // MDL的具体产品 public class MDLBurger implements Burger { @Override public String getName() { return "牛肉堡"; } } public class MDLChicken implements Chicken { @Override public String getName() { return "炸鸡腿"; } } public class MDLDrink implements Drink { @Override public String getName() { return "橙汁"; } } ``` 抽象工厂接口 定义抽象工厂接口: ```java public interface FastFoodFactory { Burger createBurger(); Chicken createChicken(); Drink createDrink(); } ``` 具体工厂类 实现具体工厂类: ```java // KFC工厂 public class KFCFactory implements FastFoodFactory { @Override public Burger createBurger() { return new KFCBurger(); } @Override public Chicken createChicken() { return new KFCChicken(); } @Override public Drink createDrink() { return new KFCDrink(); } } // MDL工厂 public class MDLFactory implements FastFoodFactory { @Override public Burger createBurger() { return new MDLBurger(); } @Override public Chicken createChicken() { return new MDLChicken(); } @Override public Drink createDrink() { return new MDLDrink(); } } ``` 客户端代码 客户端代码使用这些工厂来创建具体的产品: ```java public class Client { public static void main(String[] args) { FastFoodFactory kfcFactory = new KFCFactory(); FastFoodFactory mdlFactory = new MDLFactory(); Burger kfcBurger = kfcFactory.createBurger(); Chicken kfcChicken = kfcFactory.createChicken(); Drink kfcDrink = kfcFactory.createDrink(); System.out.println("KFC产品:"); System.out.println("汉堡: " + kfcBurger.getName()); System.out.println("炸鸡: " + kfcChicken.getName()); System.out.println("饮料: " + kfcDrink.getName()); Burger mdlBurger = mdlFactory.createBurger(); Chicken mdlChicken = mdlFactory.createChicken(); Drink mdlDrink = mdlFactory.createDrink(); System.out.println("MDL产品:"); System.out.println("汉堡: " + mdlBurger.getName()); System.out.println("炸鸡: " + mdlChicken.getName()); System.out.println("饮料: " + mdlDrink.getName()); } } ``` 未来扩展 如果将来需要添加新的快餐店,只需新增具体的产品类和对应的工厂类,而不需要修改现有的代码。例如,如果要添加一个新的快餐店 `BBQ`,可以这样做: 1. 新增具体产品类: ```java public class BBQBurger implements Burger { @Override public String getName() { return "烤肉堡"; } } public class BBQChicken implements Chicken { @Override public String getName() { return "烤鸡翅"; } } public class BBQDrink implements Drink { @Override public String getName() { return "可乐"; } } ``` 2. 新增具体工厂类: ```java public class BBQFactory implements FastFoodFactory { @Override public Burger createBurger() { return new BBQBurger(); } @Override public Chicken createChicken() { return new BBQChicken(); } @Override public Drink createDrink() { return new BBQDrink(); } } ``` 3. 在客户端代码中使用新的工厂: ```java FastFoodFactory bbqFactory = new BBQFactory(); Burger bbqBurger = bbqFactory.createBurger(); Chicken bbqChicken = bbqFactory.createChicken(); Drink bbqDrink = bbqFactory.createDrink(); System.out.println("BBQ产品:"); System.out.println("汉堡: " + bbqBurger.getName()); System.out.println("炸鸡: " + bbqChicken.getName()); System.out.println("饮料: " + bbqDrink.getName()); ``` 这样,通过抽象工厂模式,我们可以轻松地扩展系统以支持更多的快餐店及其产品。 ######[AI写代码神器 | 1127点数解答 | 2024-10-24 17:29:25]
- 抽象工厂模式:实现 KFC 与 Mdl 快餐产品代工厂的 Java 代码解析(阿里通义 | 863点数解答 | 2024-10-24 17:32:40)297
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)339
- 解密iOS开发:Category、Extension与继承的区别大揭秘(阿里通义 | 292点数解答 | 2023-11-08 00:38:19)220
- iOS开发大揭秘:Category、Extension与继承的区别详解 (百度文心 | 316点数解答 | 2023-11-09 17:40:23)213
- Python 实现 DES 加密算法编程实验:从原理到单步调试全解析(字节豆包 | 4096点数解答 | 2025-11-09 22:06:30)68
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)308
- 深度解析:Vue中MVVM模式的组成、原理与双向数据绑定优势 (阿里通义 | 249点数解答 | 2023-11-09 00:56:24)262
- Android开发:Kotlin实现Builder模式示例及优势解析(百度文心 | 456点数解答 | 2023-11-09 17:29:15)249
- 工程师必知:PO模式与Page Factory的深度解析(百度文心 | 132点数解答 | 2023-11-09 18:33:18)285
- 2026 年苍溪县印刷企业年报工作:现状、问题与未来举措(字节豆包 | 1245点数解答 | 2026-03-09 12:55:05)11
- Python实现整数序列奇偶项输出(字节豆包 | 346点数解答 | 2026-03-15 02:01:10)7
- iOS开发:手把手教你完整实现代理模式,含声明与实现步骤!(阿里通义 | 268点数解答 | 2023-11-08 00:39:55)248