|
|
/**
|
|
|
* 智能保险柜类
|
|
|
* 实现了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;
|
|
|
}
|
|
|
} |