设计模式二之观察者模式学习笔记

设计模式二之观察者模式学习笔记

观察者模式:定义了对象之间的一对多依赖,这样一来,当一个对象改变时,它的所有依赖者都会收到通知并自动更新。
业务需求如下:

需求

某公司有个气象装置,这个气象装置要通过温度、湿度、气压感应装置得到数据,然后通过一个系统
将天气状况显示在布告板上,暂时有三个布告板分别显示目前状况、气象统计和天气预报,要根据天气的变化及时更新布告板。

开始设计

开始的思路是只有两类对象,一类是气象站对象。一类是布告板对象。气象站通过某种手段获取数据,布告板与气象站组合,各个的布告板展现一个数据作为例子。
具体实现如下:
在这里插入图片描述

package headfirst.observer.old;
/**
 * 气象站
 */
public class WeatherStation {
   
	//湿度
	private String humidity;
	//温度
	private String temperature;
	//气压
	private String pressure;
	//还有一个方法当指标变化时或者定时任务,更新这些指标调用updateMeasure方法更新指标,不会写
	
	//更新测量情况
	public void updateMeasure(String humidity,String temperature,String pressure){
   
		setHumidity(humidity);
		setTemperature(temperature);
		setPressure(pressure);
	}
	
	public String getHumidity() {
   
		return humidity;
	}
	public void setHumidity(String humidity) {
   
		this.humidity = humidity;
	}
	public String getTemperature() {
   
		return temperature;
	}
	public void setTemperature(String temperature) {
   
		this.temperature = temperature;
	}
	public String getPressure() {
   
		return pressure;
	}
	public void setPressure(String pressure) {
   
		this.pressure = pressure;
	}
	
}

可以单独创建一个Display接口,里面有display()方法,Bload实现这个接口,这里面略去了。

package headfirst.observer.old;
/**
 * 布告板抽象类
 */
public abstract class Bload {
   
	//大小
	public String size;
	//电量,电压等等属性
	public String Voltage;
	
	public WeatherStation weatherStation;
	protected  Bload(WeatherStation weatherStation) {
   
		this.weatherStation = weatherStation;
	}
	public abstract void display();
}
package headfirst.observer.old;
/**
 * 湿度布告板类
 */
public class HumidityBload extends Bload{
   

	protected HumidityBload(WeatherStation weatherStation) {
   
		super(weatherStation);
	}

	@Override
	public void display() {
   
		System.out.println("湿度:"+weatherStation.getHumidity());
	}
	
}
package headfirst.observer
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值