设计模式 -- 观察者模式

前言

月是一轮明镜,晶莹剔透,代表着一张白纸(啥也不懂)

央是一片海洋,海乃百川,代表着一块海绵(吸纳万物)

泽是一柄利剑,千锤百炼,代表着千百锤炼(输入输出)

月央泽,学习的一种过程,从白纸->吸收各种知识->不断输入输出变成自己的内容

希望大家一起坚持这个过程,也同样希望大家最终都能从零到零,把知识从薄变厚,再由厚变薄!

一、什么是观察者模式?

        观察者模式(Observer Pattern)是一种行为型设计模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个目标对象,当目标对象发生变化时,会自动通知所有观察者对象,使它们能够及时更新自己的状态。

        在观察者模式中,有两个核心角色:Subject(目标对象)和 Observer(观察者对象)。Subject 维护了一个观察者列表,当它的状态发生变化时,会遍历观察者列表,通知每个观察者对象进行更新。

二、观察者模式的优缺点:

优点:

  1. 松耦合:观察者模式将观察者和被观察者解耦,使得它们可以独立地变化,而不影响彼此。

  2. 可扩展性:当需要增加新的观察者时,只需添加新的观察者类即可,而不需要修改被观察者的代码。

  3. 易于维护:观察者模式将业务逻辑分散到多个观察者中,使得代码更易于理解和维护。

  4. 可重用性:观察者模式可以被多个被观察者共享,从而提高代码的可重用性。

缺点:

  1. 观察者模式会导致程序中出现大量的被观察者和观察者之间的交互,导致程序复杂度增加。

  2. 如果观察者对象过多,可能会导致被观察者对象的性能下降。

  3. 观察者模式中,观察者对象和被观察者对象之间是松耦合的,这可能会导致代码可读性降低。

  4. 观察者模式中,如果需要增加新的观察者对象,需要修改被观察者对象的代码,这可能会导致代码的可维护性降低。

三、观察者模式的结构:

 

四、观察者模式实战:

        以上图为例,被观察者儿子(son),以及两个观察者dad和mom,大家小时候都应该有这样一种感觉,写作业的时候总感觉背后有人盯着.

1.创建被观察者son

 

2.创建观察者dad和mom

 

 

3. 测试

 4.结果

 

五.总结:

观察者模式的应用场景包括:

  1. GUI界面中的事件处理:当用户与界面交互时,界面会触发一些事件,这些事件会被多个对象所监听,每个监听对象都会根据事件的类型执行不同的操作。

  2. 视频直播系统中的订阅功能:用户可以订阅自己感兴趣的主播或频道,当主播或频道发布新的视频时,用户会收到通知。

  3. 股票交易系统中的价格变化:多个投资者可以监听同一只股票的价格变化,当价格变化时,他们可以根据自己的策略做出相应的投资决策。

  4. 消息推送系统中的订阅功能:用户可以订阅自己感兴趣的消息类型,当系统有新的消息时,用户会收到通知。

  5. 订单系统中的状态变化:多个部门可以监听同一笔订单的状态变化,当订单状态发生变化时,他们可以根据自己的职责做出相应的处理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值