/** * 智能窗帘类 * 实现SmartDevice和CurtainControl接口 */ public class SmartCurtain implements SmartDevice, CurtainControl { private String deviceId; private String deviceName; private int position; // 0-100,0表示完全关闭,100表示完全打开 private boolean isPowerOn; /** * 构造函数 * @param deviceId 设备ID * @param deviceName 设备名称 */ public SmartCurtain(String deviceId, String deviceName) { this.deviceId = deviceId; this.deviceName = deviceName; this.position = 0; // 默认关闭状态 this.isPowerOn = false; } @Override public String getDeviceId() { return deviceId; } @Override public String getDeviceName() { return deviceName; } @Override public String getDeviceType() { return "智能窗帘"; } @Override public String getStatusDescription() { if (!isPowerOn) { return "设备已关闭"; } if (isFullyOpen()) { return "窗帘完全打开"; } if (isFullyClosed()) { return "窗帘完全关闭"; } return "窗帘打开 " + position + "%"; } @Override public void openCurtain() { if (!isPowerOn) { System.out.println(deviceName + " 未开启电源,无法操作"); return; } this.position = 100; System.out.println(deviceName + " 窗帘已完全打开"); } @Override public void closeCurtain() { if (!isPowerOn) { System.out.println(deviceName + " 未开启电源,无法操作"); return; } this.position = 0; System.out.println(deviceName + " 窗帘已完全关闭"); } @Override public void setCurtainPosition(int position) { if (!isPowerOn) { System.out.println(deviceName + " 未开启电源,无法操作"); return; } // 确保位置值在有效范围内 this.position = Math.max(0, Math.min(100, position)); System.out.println(deviceName + " 窗帘位置已设置为 " + this.position + "%"); } @Override public int getCurtainPosition() { return position; } @Override public boolean isFullyOpen() { return position >= 100; } @Override public boolean isFullyClosed() { return position <= 0; } /** * 开启设备电源 */ public void turnOn() { this.isPowerOn = true; System.out.println(deviceName + " 电源已开启"); } /** * 关闭设备电源 */ public void turnOff() { this.isPowerOn = false; System.out.println(deviceName + " 电源已关闭"); } /** * 检查设备电源状态 * @return 如果设备开启则返回true */ public boolean isPowerOn() { return isPowerOn; } }