/** * 动态设备管理系统 * 可以根据设备实现的接口自动识别和管理设备功能 */ import java.util.ArrayList; import java.util.List; public class DeviceManager { private String name; private List devices; public DeviceManager(String name) { this.name = name; this.devices = new ArrayList<>(); } /** * 添加设备到管理系统 * @param device 要添加的设备 */ public void addDevice(Device device) { devices.add(device); System.out.println(name + " 已添加设备: " + device.getName()); } /** * 移除设备 * @param deviceName 设备名称 * @return 是否移除成功 */ public boolean removeDevice(String deviceName) { for (Device device : devices) { if (device.getName().equals(deviceName)) { devices.remove(device); System.out.println(name + " 已移除设备: " + deviceName); return true; } } return false; } /** * 打开所有设备 */ public void turnOnAllDevices() { for (Device device : devices) { device.turnOn(); } } /** * 关闭所有设备 */ public void turnOffAllDevices() { for (Device device : devices) { device.turnOff(); } } /** * 列出所有设备及其功能 */ public void listAllDevices() { System.out.println("===== " + name + " 设备列表 ====="); for (Device device : devices) { System.out.println("设备: " + device.getName() + " (状态: " + (device.isOn() ? "开启" : "关闭") + ")"); System.out.print(" 支持的功能: "); List capabilities = new ArrayList<>(); if (device instanceof TemperatureAdjustable) { capabilities.add("温度调节"); } if (device instanceof BrightnessAdjustable) { capabilities.add("亮度调节"); } if (device instanceof MediaPlayable) { capabilities.add("媒体播放"); } if (device instanceof Timable) { capabilities.add("定时功能"); } System.out.println(String.join(", ", capabilities)); } } /** * 根据接口类型查找设备 * @param interfaceType 接口类型 * @return 实现该接口的设备列表 */ @SuppressWarnings("unchecked") public List findDevicesByInterface(Class interfaceType) { List result = new ArrayList<>(); for (Device device : devices) { if (interfaceType.isInstance(device)) { result.add((T) device); } } return result; } /** * 批量设置温度调节设备的温度 * @param temperature 目标温度 */ public void setTemperatureForAll(int temperature) { List tempDevices = findDevicesByInterface(TemperatureAdjustable.class); for (TemperatureAdjustable device : tempDevices) { if (device instanceof Device && ((Device)device).isOn()) { device.setTemperature(temperature); } } } /** * 批量设置亮度调节设备的亮度 * @param brightness 目标亮度 */ public void setBrightnessForAll(int brightness) { List brightnessDevices = findDevicesByInterface(BrightnessAdjustable.class); for (BrightnessAdjustable device : brightnessDevices) { if (device instanceof Device && ((Device)device).isOn()) { device.setBrightness(brightness); } } } }