在 java 中,使用 observable 和 observer 接口可以实现可观察模式,通过将观察者附加到可观察对象,当可观察对象状态发生变化时,观察者将得到通知。
使用 Java 框架实现可观察模式
引言
可观察模式是一种设计模式,它允许对象在状态发生变化时通知其依赖对象。在 Java 中,可以使用 Observable 和 Observer 接口来实现可观察模式。
立即学习“Java免费学习笔记(深入)”;
点击下载“修复打印机驱动工具”;
实现
要实现可观察模式,首先需要创建 Observable 类。Observable 类包含一个观察者列表,当该类的状态发生变化时,将通知这些观察者。
接下来,创建 Observer 接口。Observer 接口定义了当 Observable 对象的状态发生变化时调用的方法。
实战案例
考虑以下示例,其中 WeatherData 类是 Observable 的一个子类,它表示天气数据。我们还定义了一个 Display 类,它实现了解析器接口,并且显示天气数据。public class WeatherData extends Observable {
private float temp;
private float humid;
private float pressure;
public void setMeasurements(float temp, float humid, float pressure) {
this.temp = temp;
this.humid = humid;
this.pressure = pressure;
setChanged();
notifyObservers();
}
}
public class Display implements Observer {
@Override
public void update(Observable o, Object arg) {
if (o instanceof WeatherData) {
WeatherData data = (WeatherData) o;
System.out.println("Current measurements: " + data.getMeasurements());
}
}
}
public class Main {
public static void main(String[] args) {
WeatherData weatherData = new WeatherData();
Display display = new Display();
weatherData.addObserver(display);
weatherData.setMeasurements(30.0f, 60.0f, 1013.25f);
}
}登录后复制输出运行此代码将打印以下输出:Current measurements: [temp=30.0, humid=60.0, pressure=1013.25]登录后复制总结
通过使用 Observable 和 Observer 接口,可以在 Java 中实现可观察模式。这是一个强大的模式,可用于解耦对象及其依赖对象。以上就是java框架如何实现可观察模式?的详细内容,更多请关注php中文网其它相关文章!


BrianSab10 天前
发表在:南通速强批量添加水印专家 v1.83Эта статья для ознак...
Ronaldgag12 天前
发表在:11日17日,星期一,在这里每天60秒读懂世界!Free PHP Blockchain ...
NelsonBOT12 天前
发表在:11日16日,星期日,在这里每天60秒读懂世界!Free non-criminal in...
Darrenjhjhjhcunny15 天前
发表在:11日14日,星期五,在这里每天60秒读懂世界!Атака черной материи...
parifoot-rdc-7926 天前
发表在:laravel 找不到页面Votre guide <a href=...
Anya142Sa1 个月前
发表在:ASUS华硕A8N-SLI Deluxe主板BIOS 10110Hello friends! I c...
91资源网站长-冰晨1 个月前
发表在:广告合作123
FrankFAT1 个月前
发表在:10日14日,星期二,在这里每天60秒读懂世界!Big cocks of blacks ...
RichardGlymn1 个月前
发表在:Java webservice多个参数怎么调用https://t.me/win_1_c...
Thomasstolo1 个月前
发表在:Java webservice多个参数怎么调用https://t.me/s/Casin...