ADD file via upload

main
pc9pizjb6 6 months ago
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…
Cancel
Save