parent
fb2a4d2154
commit
0089bb64fe
@ -0,0 +1,128 @@
|
||||
/**
|
||||
* 动态设备管理系统
|
||||
* 可以根据设备实现的接口自动识别和管理设备功能
|
||||
*/
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class DeviceManager {
|
||||
private String name;
|
||||
private List<Device> 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<String> 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 <T> List<T> findDevicesByInterface(Class<T> interfaceType) {
|
||||
List<T> 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<TemperatureAdjustable> 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<BrightnessAdjustable> brightnessDevices = findDevicesByInterface(BrightnessAdjustable.class);
|
||||
for (BrightnessAdjustable device : brightnessDevices) {
|
||||
if (device instanceof Device && ((Device)device).isOn()) {
|
||||
device.setBrightness(brightness);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in new issue