日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

观察者模式——例题

發布時間:2024/1/18 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 观察者模式——例题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

觀察者模式——例題

  • 一、題目
  • 二、代碼
    • 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{@Overridepublic void alarm() {System.out.println("溫度高于40度,發出警報!");} }

3.警示燈 CautionLight.java

/*** 警示燈*/ public class CautionLight implements AlarmListener{@Overridepublic 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{@Overridepublic 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("溫度正常!");}}} }

三、運行結果

總結

以上是生活随笔為你收集整理的观察者模式——例题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。