设计模式-观察者模式(三) 世界观点
时间:2023-05-05 17:44:37来源:腾讯云


【资料图】

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

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

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

观察者模式的优缺点

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

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

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

标签:

最新
  • 设计模式-观察者模式(三) 世界观点

    观察者模式的优点在于它可以实现对象之间的松耦合,主题对象和观察者对象之间的耦合度较低,可以相互独立地

  • excel表格序号不递增都是1_excel表格序号不递增

    1、因为要设置往下拉的格式为填充序列,下拉数字才会递增。2、以excel2010版本为例,如下图所示,想把单元

  • 水瓶座的痴情让人无法理解 可以痴情到愿意为了对方来改变自己?

    白羊座:痴情到眼里只有对方白羊座的痴情,让人无法理解,为什么他们可以眼里只有对方?当外界一些形形色

  • 世界速递!闵行马桥新添一处绿地,面积近8000平方米

    闵行区马桥镇元江路南侧(华宁路—元江路)城市绿地——悦动花园已于近期结束施工,向居民开放。

  • a股熔断机制是什么意思?熔断机制与涨跌停板制度有什么不同?

    a股熔断机制是什么意思?a股熔断机制是指当股指波动达到规定的熔断点时,交易所为控制风险而采取的停牌措

  • 一加ace2手机什么时候发布的 一加ace2有红外吗?

    一加ace2手机什么时候发布的 一加ace2有红外吗?一加ace2手机官网在1月31日正式宣布在2月7日14:30上线发

  • 什么是复权处理?什么是净残值?

    所谓复权就是对股价和成交量进行权息修复,按照股票的实际涨跌绘制股价走势图,并把成交量调整为相同的股

  • 鲜百合吃多了会中毒吗?干百合怎么去除苦味?

    鲜百合吃多了会中毒吗?市面上大部分卖的都是干百合,很少看到卖新鲜百合的,为什么百合一定要晒干后当

  • 投资股票有什么优点? 投资股票收益属于什么收入?

    投资股票有什么优点?股票投资的优点:高回报:股票投资可以享受到企业发展带来的好处,例如利润增加,股价

  • 一万元理财怎么好? 理财要注意什么问题?

    一万元理财怎么好?一、银行定期银行定期是最简单也最安全的理财方式,适合那些不愿意承担风险的人。银行

  • 酵素菌有什么作用?酵素和益生菌有什么区别?

    酵素菌有什么作用?酵素由水果,糖,低浓度酒精一起发酵而成。吃酵素益生菌可以帮助促进胃肠蠕动,改善胃

  • 社保未交满15年可以领取养老金吗?社保未交满十五年该怎么办

    社保未交满15年可以领取养老金吗假如社保交的比较晚,交了几年马上就要到退休的年龄,社保没交满15年,

  • 一加8Pro透视相机怎么用?一加8pro透视功能怎么开启?

    一加8Pro透视相机怎么用?1、一加8 Pro的透视摄像功能其实就是摄像功能的秋意滤镜模式。打开摄像头功能

  • 光大白金卡额度最高能提到多少?光大1188年费积分不够怎么办?

    光大银行信用卡白金卡最高额度是多少?500万 光大银行信用卡白金卡最高额度为500万。 它的额度一般是在

  • 医疗险可以报销意外导致的医疗费用吗?商业保险出院一般多久报销?

    医疗险可以报销意外导致的医疗费用吗?医疗保险可以覆盖意外事故引起的医疗费用,但应由第三方承担的医疗费用不属于基本医疗保险,而属于商

  • 股市的卡位是什么意思?龙头股卡位是什么意思?

    股市的卡位是什么意思?股市的卡位是指股票之间竞争市场资金活跃度的过程,参与卡位的股票有可能是不同题材的股票,也有可能是同一题材的股

  • 旅游
    • 焦点信息:2022年度无锡市工业和信息化及企业十大新闻揭晓仪式举行

    • 世界热讯:呼和浩特市2023年1月“一卡通”发放情况

    • 每日视点!甘肃文旅厅实地调研检查武威铜奔马文化旅游景区国家5A级旅游景区

    • 江西广电局推法律顾问工作并举行2023年度聘用律师签约仪式|前沿热点