前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >设计模式-观察者模式(三)

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

原创
作者头像
堕落飞鸟
发布2023-05-04 16:00:29
1970
发布2023-05-04 16:00:29
举报
文章被收录于专栏:飞鸟的专栏

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

代码语言:javascript
复制
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);
    }
}

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

代码语言:javascript
复制
Current conditions: 80.0F degrees and 65.0% humidity and 30.4Pa
Current conditions: 82.0F degrees and 70.0% humidity and 29.2Pa
Current conditions: 78.0F degrees and 90.0% humidity and 29.2Pa

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

观察者模式的优缺点

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

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

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 观察者模式的优缺点
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档