Python 官方文档:入门教程 => 点击学习
目录介绍实现总结优点缺点应用场景介绍 Java观察者模式(也称发布-订阅模式)是一种行为设计模式,用于对象之间的松散耦合,即当一个对象的状态发生变化时,其他依赖该对象的对象会被自动通
Java观察者模式(也称发布-订阅模式)是一种行为设计模式,用于对象之间的松散耦合,即当一个对象的状态发生变化时,其他依赖该对象的对象会被自动通知并作出相应的响应.
观察者模式有以下4种角色:
观察者接口
public interface Observer {
void update(float temperature,float humidity);
}
主题接口
public interface Subject {
void reGISterObserver(Observer observer);
void removeObserver(Observer observer);
void notifyObservers();
}
具体主题
public class WeatherData implements Subject {
private List<Observer> observers;
private float temperature;
private float humidity;
public WeatherData() {
observers = new ArrayList<>();
}
@Override
public void registerObserver(Observer observer) {
observers.add(observer);
}
@Override
public void removeObserver(Observer observer) {
observers.remove(observer);
}
@Override
public void notifyObservers() {
observers.forEach(observer -> observer.update(temperature, humidity));
}
public void setMeasurements(float temperature, float humidity) {
this.temperature = temperature;
this.humidity = humidity;
notifyObservers();
}
}
具体观察者
public class CurrentConditionsDisplay implements Observer {
private float temperature;
private float humidity;
public CurrentConditionsDisplay(Subject weatherData) {
weatherData.registerObserver(this);
}
@Override
public void update(float temperature, float humidity) {
this.temperature = temperature;
this.humidity = humidity;
display();
}
private void display() {
System.out.println("温度:" + temperature + "℃;湿度:" + humidity + "%");
}
}
public class Demo {
public static void main(String[] args) {
WeatherData weatherData = new WeatherData();
CurrentConditionsDisplay currentConditionsDisplay = new CurrentConditionsDisplay(weatherData);
weatherData.setMeasurements(35,53);
weatherData.setMeasurements(32,48);
weatherData.setMeasurements(26,44);
}
}
在这个例子中,WeatherData是主题,CurrentConditonsDisplay是观察者.当WeatherData的数据发生变化时,它会通知已经注册的所有观察者进行相应的更新.在这个例子中CurrentConditionsDisplay观察者会展示当前的温度和湿度信息.
Java观察者模式时一种常见的设计模式.该模式中,一个对象(被观察者)维护了一个观察者列表,当它自身发生改变时,会自动通知所有观察者做出相应的响应.
到此这篇关于Java实现数据更新和事件通知的观察者模式的文章就介绍到这了,更多相关Java观察者模式内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
--结束END--
本文标题: Java实现数据更新和事件通知的观察者模式
本文链接: https://lsjlt.com/news/210952.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0