package cn.edu.qust.dp.object;
import java.util.ArrayList;
import java.util.List;
import cn.edu.qust.dp.Interface.DisplayElement;
import cn.edu.qust.dp.Interface.Observer;
import cn.edu.qust.dp.Interface.Subject;
public class StatisticsDisplay implements Observer, DisplayElement {
//具体的观察者
private List<Float> statistics;
private float Avg;
private float Max;
private float Min;
private Subject weatherData;
public StatisticsDisplay(Subject weatherData){
//指定气象站并注册
this.weatherData = weatherData;
weatherData.registerObserver(this);
statistics = new ArrayList<>();
}
@Override
public void display() {
//找出最值
Max = Min = statistics.get(0);
for(int i = 0;i < statistics.size();i++){
if (statistics.get(i) > Max){
Max = statistics.get(i);
}
if (statistics.get(i) < Min){
Min = statistics.get(i);
}
}
Avg = 0;
for(int i = statistics.size()-1; i >= 0; i--){
Avg += statistics.get(i);
}
Avg = Avg/statistics.size();
System.out.println("Avg/Max/Min:"
+ "temperature = "
+ Avg + "/"
+ Max + "/"
+ Min + "/"
+ " (by 1508060330)");
}
@Override
public void update(float temp, float humidity, float pressure) {
//控制缓存三天天气
if(statistics.size() > 3){
//删除旧元素
statistics.remove(0);
}
//添加新元素
statistics.add(temp);
//更新后显示
display();
}
}
请根据观察者模式,用Java语言设计并实现气象站程序。
需积分: 25 132 浏览量
2017-12-04
11:59:33
上传
评论 1
收藏 11KB RAR 举报
Amarao
- 粉丝: 382
- 资源: 40
评论0