Java 简单工厂模式:模拟根据不同理由生成迟到原因
简单工厂模式是一种用于创建对象的设计模式,它允许在不指定具体类的情况下创建对象。在这个例子中,我们将使用简单工厂模式来根据不同的迟到理由创建相应的迟到理由对象。下面是一个简单的实现: 1. 定义迟到理由接口 首先,我们定义一个迟到理由的接口 `LateReason`,所有具体的迟到理由类都将实现这个接口。 ```java public interface LateReason { String getReason(); } ``` 2. 实现具体的迟到理由类 接下来,我们实现几个具体的迟到理由类,每个类都实现了 `LateReason` 接口。 ```java public class BathroomLateReason implements LateReason { @Override public String getReason() { return "去厕所"; } } public class OnTheWayLateReason implements LateReason { @Override public String getReason() { return "在路上"; } } public class AtHomeLateReason implements LateReason { @Override public String getReason() { return "回家"; } } ``` 3. 创建简单工厂类 现在,我们创建一个简单工厂类 `LateReasonFactory`,它根据传入的参数创建相应的迟到理由对象。 ```java public class LateReasonFactory { public static LateReason createLateReason(String reasonType) { if (reasonType == null || reasonType.isEmpty()) { return null; } switch (reasonType) { case "bathroom": return new BathroomLateReason(); case "onTheWay": return new OnTheWayLateReason(); case "atHome": return new AtHomeLateReason(); default: return null; } } } ``` 4. 使用简单工厂 我们在主程序中使用简单工厂来创建迟到理由对象,并获取具体的迟到理由。 ```java public class Main { public static void main(String[] args) { // 创建迟到理由对象 LateReason lateReason1 = LateReasonFactory.createLateReason("bathroom"); LateReason lateReason2 = LateReasonFactory.createLateReason("onTheWay"); LateReason lateReason3 = LateReasonFactory.createLateReason("atHome"); // 获取并打印迟到理由 if (lateReason1 != null) { System.out.println("迟到理由: " + lateReason1.getReason()); } if (lateReason2 != null) { System.out.println("迟到理由: " + lateReason2.getReason()); } if (lateReason3 != null) { System.out.println("迟到理由: " + lateReason3.getReason()); } } } ``` 运行结果 运行上述代码,输出将会是: ``` 迟到理由: 去厕所 迟到理由: 在路上 迟到理由: 回家 ``` 通过简单工厂模式,我们可以根据不同的参数创建不同的对象,而不需要在客户端代码中直接实例化这些对象。这种方式使得代码更加灵活和可维护。 ######[AI写代码神器 | 642点数解答 | 2024-10-17 17:24:53]
- Java 实现复制粘贴功能:打造简易文本复制粘贴程序(GPT | 1497点数解答 | 2024-08-25 09:40:33)432
- 代码填空挑战:完成正态分布、随机数生成及数据处理代码(阿里通义 | 506点数解答 | 2025-03-23 14:32:14)345
- 挑战!完成代码填空解锁数据处理奥秘(字节豆包 | 116点数解答 | 2025-03-26 22:22:15)358
- 挑战填空!完成这段 NumPy 代码实现数据生成与保存(DeepSeek | 178点数解答 | 2025-03-26 22:26:30)419
- 解决数据库“dm.jdbc.driver.dmexception: 数据溢出”问题的全步骤指南(阿里通义 | 598点数解答 | 2024-10-15 15:48:38)330
- 达梦数据库数据溢出问题排查及多维度解决方法(阿里通义 | 403点数解答 | 2024-10-15 15:48:41)1223
- 深入解析格雷码生成算法:递归求解与代码实现(DeepSeek | 443点数解答 | 2026-01-05 12:21:49)70
- 深入探究:n 位格雷码中编号 k 二进制串的求解算法与实现(DeepSeek | 726点数解答 | 2026-01-13 12:31:37)71
- 5条新春贺语,开启龙年吉祥团圆新篇章!(字节豆包 | 135点数解答 | 2025-01-15 14:43:34)329
- "Java Code: Uncovering Stock Statistics through CSV File Reading"(字节豆包 | 66点数解答 | 2024-11-13 15:31:04)339
- 洛谷乒乓球题解:11 分制与 21 分制比赛结果计算全攻略(DeepSeek | 675点数解答 | 2025-04-28 18:19:45)320
- C++ 模拟:助冒险者用神秘数字构建直角三角形,开发要点大揭秘! (DeepSeek | 156点数解答 | 2025-09-14 21:30:10)317