展开全部
原理:观察者模式
两个类可实现。
一个是监听温度类,它是一个线程类,每时每刻测量室内问32313133353236313431303231363533e4b893e5b19e31333361323661题,当室内温度小于15度时,通知升温类升温。
另一个类升温类,它的功能是“当室内温度小于15度时,将空调温度每次提升一度,直到升到25度,并将执行的结果告诉监听温度类(我升温完毕了,假如温度还低于15度,请再次通知我升温吧)。package cn.com;
import java.util.Random;
/**
* 测量温度类
*
* @author JinBiaoHuang
*
*/
public class MeasureTemperature implements Runnable {
private static boolean raisingTemperature = false;// 是否正在升温,假如正在升温,就不需要通知了
private int temperature;
@Override
public void run() {
while (true) {//每时每刻测量温度,假如低于15度,并且
try {
temperature = getRandomTemperature();// 测量温度
Thread.sleep(10); // 模拟测量温度所需时间
if (!raisingTemperature && temperature
System.out.println("现在温度是" + temperature + "度,太冷了,要升温才行");
raisingTemperature = true;
new ControlTemperature().raiseTemperature(temperature);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
private int getRandomTemperature() { //正常室温就40度
return new Random().nextInt(40);
}
public void setRaisingTemperature(boolean that_raisingTemperature) {
raisingTemperature = that_raisingTemperature;
}
}
package cn.com;
/**
* 升温类
*
* @author JinBiaoHuang
*
*/
public class ControlTemperature {
public void raiseTemperature(int temperature) throws InterruptedException {
System.out.println("我收到你的升温请求了请稍等...");
while (temperature
Thread.sleep(20);//模拟升温需要的时间
temperature++;
System.out.println("努力升温中,现在温度是" + temperature + "度,在稍等一会..");
}
System.out.println("升温完毕,现在温度是" + temperature + "度,够暖和了吧");
new MeasureTemperature().setRaisingTemperature(false);
}
}
package cn.com;
/**
* 测试类
* @author JinBiaoHuang
*
*/
public class RaiseTemperatureTest {
public static void main(String[] args) {
MeasureTemperature runnable = new MeasureTemperature();
new Thread(runnable).start();//启动线程
}
}
打印结果
现在温度是7度,太冷了,要升温才行
我收到你的升温请求了请稍等...
努力升温中,现在温度是8度,在稍等一会..
努力升温中,现在温度是9度,在稍等一会..
努力升温中,现在温度是10度,在稍等一会..
努力升温中,现在温度是11度,在稍等一会..
努力升温中,现在温度是12度,在稍等一会..
努力升温中,现在温度是13度,在稍等一会..
努力升温中,现在温度是14度,在稍等一会..
努力升温中,现在温度是15度,在稍等一会..
努力升温中,现在温度是16度,在稍等一会..
努力升温中,现在温度是17度,在稍等一会..
努力升温中,现在温度是18度,在稍等一会..
努力升温中,现在温度是19度,在稍等一会..
努力升温中,现在温度是20度,在稍等一会..
努力升温中,现在温度是21度,在稍等一会..
努力升温中,现在温度是22度,在稍等一会..
努力升温中,现在温度是23度,在稍等一会..
努力升温中,现在温度是24度,在稍等一会..
努力升温中,现在温度是25度,在稍等一会..
升温完毕,现在温度是25度,够暖和了吧