当前位置: 首页 > 热点

设计模式-观察者模式(三)

2023-05-05 16:05:47 来源:腾讯云


(资料图片)

最后,我们可以编写一个简单的测试程序来演示观察者模式:

public class WeatherStation {    public static void main(String[] args) {        ConcreteSubject weatherData = new ConcreteSubject();        ConcreteObserver currentConditionsDisplay = new ConcreteObserver();        weatherData.registerObserver(currentConditionsDisplay);        weatherData.setMeasurements(80, 65, 30.4f);        weatherData.setMeasurements(82, 70, 29.2f);        weatherData.setMeasurements(78, 90, 29.2f);    }}

运行测试程序后,可以看到如下输出:

Current conditions: 80.0F degrees and 65.0% humidity and 30.4PaCurrent conditions: 82.0F degrees and 70.0% humidity and 29.2PaCurrent conditions: 78.0F degrees and 90.0% humidity and 29.2Pa

这表明当气象数据发生变化时,观察者会自动收到通知并更新自己的状态。

观察者模式的优缺点

观察者模式的优点在于它可以实现对象之间的松耦合,主题对象和观察者对象之间的耦合度较低,可以相互独立地变化。这使得我们可以更加灵活地添加或删除观察者对象,也可以在不影响主题对象的情况下添加新的观察者对象。

另外,观察者模式还可以支持广播通信,当一个主题对象发生变化时,它的所有观察者对象都会收到通知,并且可以自动更新自己的状态。这种广播通信模式可以减少对象之间的相互依赖,从而使代码更加清晰、简洁。

观察者模式的缺点在于,如果观察者对象太多,会导致主题对象通知所有观察者对象的时间变长,从而影响程序的性能。另外,如果观察者对象之间有循环依赖的情况,可能会导致死循环,从而使程序崩溃。

关键词:

相关阅读

Copyright   2015-2022 北冰洋技术网 版权所有  备案号:沪ICP备2020036824号-3   联系邮箱:562 66 29@qq.com