Java 实现对象适配器:让电能、光能发动机与发动机接口完美兼容
为了实现对象适配器模式,我们需要创建一个适配器类,该类将电能发动机和光能发动机适配到发动机接口。以下是完整的代码实现: ```java // 目标接口:发动机 interface Motor { void drive(); } // 适配者1:电能发动机 class ElectricMotor { public void electricDrive() { System.out.println("电能发动机驱动汽车!"); } } // 适配者2:光能发动机 class OpticalMotor { public void opticalDrive() { System.out.println("光能发动机驱动汽车!"); } } // 对象适配器类 class MotorAdapter implements Motor { private ElectricMotor electricMotor; private OpticalMotor opticalMotor; // 构造函数,传入要适配的电能发动机 public MotorAdapter(ElectricMotor electricMotor) { this.electricMotor = electricMotor; } // 构造函数,传入要适配的光能发动机 public MotorAdapter(OpticalMotor opticalMotor) { this.opticalMotor = opticalMotor; } @Override public void drive() { if (electricMotor != null) { electricMotor.electricDrive(); } else if (opticalMotor != null) { opticalMotor.opticalDrive(); } else { System.out.println("没有适配的发动机!"); } } } // 测试类 public class Main { public static void main(String[] args) { // 创建电能发动机 ElectricMotor electricMotor = new ElectricMotor(); // 创建光能发动机 OpticalMotor opticalMotor = new OpticalMotor(); // 创建适配器 Motor motor1 = new MotorAdapter(electricMotor); Motor motor2 = new MotorAdapter(opticalMotor); // 使用适配器驱动汽车 motor1.drive(); // 输出: 电能发动机驱动汽车! motor2.drive(); // 输出: 光能发动机驱动汽车! } } ``` 解释 1. Motor 接口:定义了 `drive` 方法,这是所有发动机需要实现的方法。 2. ElectricMotor 类:实现了 `electricDrive` 方法,模拟电能发动机的工作。 3. OpticalMotor 类:实现了 `opticalDrive` 方法,模拟光能发动机的工作。 4. MotorAdapter 类:实现了 `Motor` 接口,并通过构造函数接收 `ElectricMotor` 或 `OpticalMotor` 对象。在 `drive` 方法中,根据传入的对象调用相应的方法。 测试 在 `Main` 类中,我们创建了 `ElectricMotor` 和 `OpticalMotor` 的实例,并使用 `MotorAdapter` 将它们适配为 `Motor` 接口。然后调用 `drive` 方法来验证适配器是否工作正常。 ######[AI写代码神器 | 611点数解答 | 2024-10-28 17:34:06]
- Java 实现复制粘贴功能:打造简易文本复制粘贴程序(GPT | 1497点数解答 | 2024-08-25 09:40:33)404
- 车载系统 UML 类图设计:涵盖 Car、Engine、娱乐系统等的完整类定义与关系解析 (字节豆包 | 760点数解答 | 2024-08-15 22:51:04)307
- 递归实现:将对象所有属性值转换为字符串!含代码示例(字节豆包 | 143点数解答 | 2024-11-08 10:25:12)375
- 递归实现:将对象所有属性值转换为字符串类型(字节豆包 | 142点数解答 | 2024-11-11 21:06:15)253
- 递归实现:将对象所有属性值转换为字符串,复杂嵌套也不怕!(阿里通义 | 467点数解答 | 2024-11-12 09:07:17)260
- 解决数据库“dm.jdbc.driver.dmexception: 数据溢出”问题的全步骤指南(阿里通义 | 598点数解答 | 2024-10-15 15:48:38)305
- 达梦数据库数据溢出问题排查及多维度解决方法(阿里通义 | 403点数解答 | 2024-10-15 15:48:41)1134
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)343
- Java 实战:创建 Vehicle 接口并在 Bike 类实现,T4 类调用启动与停止方法(字节豆包 | 130点数解答 | 2024-09-19 17:40:54)415
- Python 实现移位与仿射密码:精准加密解密及关键逻辑解析(字节豆包 | 798点数解答 | 2024-12-18 15:55:47)250
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)310
- "Java Code: Uncovering Stock Statistics through CSV File Reading"(字节豆包 | 66点数解答 | 2024-11-13 15:31:04)317