You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
95 lines
2.6 KiB
95 lines
2.6 KiB
/**
|
|
* 智能空调类
|
|
* 实现了SmartDevice, PowerControl和TemperatureControl接口
|
|
*/
|
|
public class SmartAirConditioner implements SmartDevice, PowerControl, TemperatureControl {
|
|
private String deviceId;
|
|
private String deviceName;
|
|
private boolean isPowerOn;
|
|
private double temperature;
|
|
private final double MIN_TEMP = 16.0;
|
|
private final double MAX_TEMP = 30.0;
|
|
|
|
/**
|
|
* 构造函数
|
|
* @param deviceId 设备ID
|
|
* @param deviceName 设备名称
|
|
*/
|
|
public SmartAirConditioner(String deviceId, String deviceName) {
|
|
this.deviceId = deviceId;
|
|
this.deviceName = deviceName;
|
|
this.isPowerOn = false;
|
|
this.temperature = 25.0; // 默认温度25度
|
|
}
|
|
|
|
@Override
|
|
public String getDeviceId() {
|
|
return deviceId;
|
|
}
|
|
|
|
@Override
|
|
public String getDeviceName() {
|
|
return deviceName;
|
|
}
|
|
|
|
@Override
|
|
public String getDeviceType() {
|
|
return "AirConditioner";
|
|
}
|
|
|
|
@Override
|
|
public String getStatusDescription() {
|
|
return deviceName + " (ID: " + deviceId + ") - 状态: " +
|
|
(isPowerOn ? "开启" : "关闭") + ", 温度: " + temperature + "°C";
|
|
}
|
|
|
|
@Override
|
|
public void turnOn() {
|
|
if (!isPowerOn) {
|
|
isPowerOn = true;
|
|
System.out.println(deviceName + " 已开启");
|
|
} else {
|
|
System.out.println(deviceName + " 已经是开启状态");
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void turnOff() {
|
|
if (isPowerOn) {
|
|
isPowerOn = false;
|
|
System.out.println(deviceName + " 已关闭");
|
|
} else {
|
|
System.out.println(deviceName + " 已经是关闭状态");
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public boolean isPowerOn() {
|
|
return isPowerOn;
|
|
}
|
|
|
|
@Override
|
|
public void setTemperature(double temperature) {
|
|
if (temperature >= MIN_TEMP && temperature <= MAX_TEMP) {
|
|
this.temperature = temperature;
|
|
System.out.println(deviceName + " 温度已设置为: " + temperature + "°C");
|
|
} else {
|
|
System.out.println(deviceName + " 温度必须在 " + MIN_TEMP + "-" + MAX_TEMP + "°C 之间");
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public double getTemperature() {
|
|
return temperature;
|
|
}
|
|
|
|
@Override
|
|
public void increaseTemperature(double increment) {
|
|
setTemperature(this.temperature + increment);
|
|
}
|
|
|
|
@Override
|
|
public void decreaseTemperature(double decrement) {
|
|
setTemperature(this.temperature - decrement);
|
|
}
|
|
} |