概述
观察者模式——例题
- 一、题目
- 二、代码
- 1.监听器 AlarmListener.java
- 2.报警器 Annunciator.java
- 3.警示灯 CautionLight.java
- 4.Gate.java
- 5.ExitGate.java
- 6.传感器 Sensor.java
- 7.测试类 Main.java
- 三、运行结果
提示:以下是本篇文章正文内容,下面案例可供参考
一、题目
某公司拟开发一套机房监控系统,功能要求如下:
如果机房达到某一指定温度,传感器将作出反应,将信号传递给响应设备,如警示灯将闪烁、报警器将发出警报、安全门逃生门将自动开启,隔热门将自动关闭,每一种响应设备的行为由专门的程序来控制。为了支持将来引入新类型的响应设备,采用观察者模式设计该系统。
(1)根据系统类图,使用Java语言编码。
(2)编写测试类,当温度高于40度时发出警报,当温度低于40度时提示温度正常。
二、代码
1.监听器 AlarmListener.java
代码如下(示例):
public interface AlarmListener {
public void alarm();
}
2.报警器 Annunciator.java
代码如下(示例):
/**
* 报警器
*/
public class Annunciator implements AlarmListener{
@Override
public void alarm() {
System.out.println("温度高于40度,发出警报!");
}
}
3.警示灯 CautionLight.java
/**
* 警示灯
*/
public class CautionLight implements AlarmListener{
@Override
public void alarm() {
System.out.println("警示灯闪烁!");
}
}
4.Gate.java
public class Gate {
public void action(){}
public void open(){
System.out.println("安全门逃生门自动开启!");
}
public void close(){
System.out.println("隔热门自动关闭!");
}
}
5.ExitGate.java
public class ExitGate extends Gate implements AlarmListener{
@Override
public void alarm() {
open();
close();
}
}
6.传感器 Sensor.java
/**
* 传感器
*/
public class Sensor {
private List<AlarmListener> alarmListenerLists = new ArrayList<AlarmListener>();
//把需要监听的设备加载进来
public void attach(AlarmListener listener){
alarmListenerLists.add(listener);
}
//解除绑定
public void deattach(AlarmListener alarmListener){
alarmListenerLists.remove(alarmListener);
}
//发出通知
public void notify1(){
for(AlarmListener alarmListener:alarmListenerLists){
alarmListener.alarm();
}
}
}
7.测试类 Main.java
public class Main {
public static void main(String[] args) {
// write your code here
//创建需要给到传感器的设备
Annunciator annunciator = new Annunciator();
CautionLight cautionLight = new CautionLight();
ExitGate exitGate = new ExitGate();
//将需要监听的设备给到传感器
Sensor sensor = new Sensor();
sensor.attach(annunciator);
sensor.attach(cautionLight);
sensor.attach(exitGate);
double temperature = 40; //设定温度
Scanner scanner = new Scanner(System.in);
System.out.println("请输入实时温度:");
//使用while循环不断获取实时温度,当温度高于40度时发出警报,当温度低于40度时提示温度正常
while (scanner.hasNext()){
String s = scanner.nextLine();
Double realTime = Double.valueOf(s);
if(realTime >= temperature){
sensor.notify1();
}else {
System.out.println("温度正常!");
}
}
}
}
三、运行结果
最后
以上就是平常小土豆为你收集整理的观察者模式——例题一、题目二、代码三、运行结果的全部内容,希望文章能够帮你解决观察者模式——例题一、题目二、代码三、运行结果所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复