我是靠谱客的博主 平常小土豆,最近开发中收集的这篇文章主要介绍观察者模式——例题一、题目二、代码三、运行结果,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

观察者模式——例题

  • 一、题目
  • 二、代码
    • 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("温度正常!");
            }
        }

    }
}

三、运行结果

在这里插入图片描述

最后

以上就是平常小土豆为你收集整理的观察者模式——例题一、题目二、代码三、运行结果的全部内容,希望文章能够帮你解决观察者模式——例题一、题目二、代码三、运行结果所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部