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.

116 lines
3.2 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/**
* 智能保险柜类
* 实现了Lockable、Monitored和Alarmable三个接口具有完整的安全功能
*/
public class SmartSafe implements Lockable, Monitored, Alarmable {
private String name;
private boolean locked;
private boolean isMonitoring;
private int alarmSensitivity;
private boolean isAlarmTriggered;
/**
* 构造函数
* @param name 保险柜名称
*/
public SmartSafe(String name) {
this.name = name;
this.locked = true; // 默认锁定状态
this.isMonitoring = true; // 默认开启监控
this.alarmSensitivity = 8; // 默认高灵敏度
this.isAlarmTriggered = false;
}
@Override
public void lock() {
if (!locked) {
locked = true;
System.out.println(name + " 已锁定");
} else {
System.out.println(name + " 已经是锁定状态");
}
}
@Override
public void unlock() {
if (locked) {
locked = false;
System.out.println(name + " 已解锁");
// 解锁时可能触发监控提醒
if (isMonitoring) {
System.out.println(name + " 监控提醒: 保险柜已被解锁");
}
} else {
System.out.println(name + " 已经是解锁状态");
}
}
@Override
public boolean isLocked() {
return locked;
}
@Override
public void startMonitoring() {
if (!isMonitoring) {
isMonitoring = true;
System.out.println(name + " 开始监控");
} else {
System.out.println(name + " 已经在监控中");
}
}
@Override
public void stopMonitoring() {
if (isMonitoring) {
isMonitoring = false;
System.out.println(name + " 停止监控");
} else {
System.out.println(name + " 已经停止监控");
}
}
@Override
public String getMonitoringStatus() {
return name + " 监控状态: " + (isMonitoring ? "正在监控" : "未监控") +
", 锁定状态: " + (locked ? "已锁定" : "未锁定");
}
@Override
public void triggerAlarm() {
if (!isAlarmTriggered) {
isAlarmTriggered = true;
System.out.println(name + " 报警已触发! 保险柜可能遭到入侵! 灵敏度级别: " + alarmSensitivity);
} else {
System.out.println(name + " 报警已经在触发状态");
}
}
@Override
public void stopAlarm() {
if (isAlarmTriggered) {
isAlarmTriggered = false;
System.out.println(name + " 报警已停止");
} else {
System.out.println(name + " 报警已经停止");
}
}
@Override
public void setAlarmSensitivity(int level) {
if (level >= 1 && level <= 10) {
this.alarmSensitivity = level;
System.out.println(name + " 报警灵敏度已设置为: " + level);
} else {
System.out.println("灵敏度必须在1-10之间");
}
}
/**
* 获取保险柜名称
* @return 保险柜名称
*/
public String getName() {
return name;
}
}