专栏首页关忆北.设计模式之观察者模式

设计模式之观察者模式

观察者模式

事件处理模型,对于事件处理模型,一般使用观察者和责任链模式。

定义:观察者模式是一种行为设计模式, 允许你定义一种订阅机制, 可在对象事件发生时通知多个 “观察” 该对象的其他对象。

观察者模式角色

  • 发布者:向其他角色发送值得关注的事件。事件会在发布者自身状态或执行特定行为后发生。
  • 订阅者:接口声明了通知接口。在绝大多数情况下,该接口只包含一个update方法。该方法可以拥有多个参数,使发布者能在更新时传递事件的详细信息。
  • 具体订阅者:可以执行一些操作来回应发布者的通知,所有具体订阅者都实现了同样的接口,因此发布者不需要与具体类相耦合。
  • 客户端:会分别创建发布者和的订阅者对象,然后为订阅者注册发布和更新。

适用场景

  • 当一个对象状态的改变需要改变其他对象, 或实际对象是事先未知的或动态变化的时,可使用观察者模式。
  • 当应用中的一些对象必须观察其他对象时,在有限时间内或特定情况下使用该模式。

订阅列表是动态的, 因此订阅者可随时加入或离开该列表。

talk is cheap,show me your code.

观察者模式demo

本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!
本文分享自作者个人站点/博客:https://blog.csdn.net/weixin_42313773复制
如有侵权,请联系 cloudcommunity@tencent.com 删除。
登录 后参与评论
0 条评论

相关文章

  • 设计模式之观察者模式

    Define a one-to-many dependency between objects where a state change in one obje...

    beginor
  • 设计模式之观察者模式

    观察者模式:Observer Pattern,又称为发布-订阅(Publish-Subscribe)模式,对象之间存在一对多或者一对一依赖,当一个对象改变状态,...

    路行的亚洲
  • 设计模式之观察者模式

    实际上这里就是一个观察者模式的例子,报社充当 Subject 主题角色,订阅报社的客户就是 Observer 观察者角色。出版者-主题,订阅者-观察者。

    码哥字节
  • 设计模式之观察者模式

    观察者模式定义了对象之间一种一对多的关系,即一个对象发生改变的时候,会通知其他相关的对象。

    丁D
  • 设计模式之观察者模式

    今天我继续和大家分享一下设计模式中的知识,今天我们来看一下观察者模式。观察者模式也可以叫发布订阅模式,在实际的场景中有很多时候会遇到这种设计模式。在现实的生活中...

    吉林乌拉
  • 设计模式之观察者模式

    大家应该都玩过超级马里奥,里边有怪物,马里奥正面碰撞就会掉血,有土块,马里奥用头顶就会弹出金币等等。从这个游戏中,我们就可以抽离出关于观察者模式的概念,马里奥...

    DotNet致知
  • 设计模式之观察者模式

    观察者模式(Observer Pattern)隶属于设计模式中的行为型模式。通过发布事件来将状态变化与处理逻辑解耦开来,可以拥有更好的可扩展性和可维护性。

    Dylan Liu
  • 设计模式之观察者模式

    当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知依赖它的对象。观察者模式属于行为型模式。

    用户2781897
  • 设计模式之观察者模式

    观察者模式又称为发布-订阅(Publish/Subscribe)模式,是23种设计模式之一。DP中是这么定义观察者模式的:

    端碗吹水
  • 设计模式之观察者模式

      随着工作时间的越来越长,发现对设计模式缺失的坏处越来越明显,但是当你知道某种设计模式的实现方式以后,你会发现,其实工作中早已经玩过这些东西,但是你之前并不知...

    阿豪聊干货
  • 设计模式之观察者模式

    观察者模式:对象之间多对一依赖的一种设计方案,被依赖的对象为Subject,依赖的对象为Observer, Subject通知Observer变化。

    用户9854323
  • 设计模式之观察者模式(一)

    前面两篇已经带大家走进了设计模式的世界,了解了策略模式,还有基本的OO基础和OO原则,不知道你是否能读懂以及了解呢。接下来,我们就要进入第二个模式的学习了,观察...

    程序员小跃
  • JavaScript设计模式之观察者模式

    观察者模式又叫发布订阅模式(Publish/Subscribe),它定义了一种一对多的关系,让多个观察者对象同时监听某一个主题对象,这个主题对象的状态发生变化时...

    用户6167509
  • java设计模式之观察者模式

    观测者模式定义了对象之间的一对多依赖,当一个对象状态发生改变时,其依赖者便会收到通知并做相应的更新。其原则是:为交互对象之间松耦合。以松耦合方式在一系列对象之间...

    BUG弄潮儿
  • 【java设计模式】之观察者模式

    观察者模式(Observer)完美的将观察者和被观察的对象分离开。举个例子,用户界面可以作为一个观察者,业务数据是被观察者,用户界面观察业务数据的变化,发现数据...

    用户5640963
  • 设计模式之观察者模式(二)

    上一篇的观察者模式学习的还好吗?首先简单来回顾下上篇内容,有一个气象站的需求,需要在温度、湿度、气压改变的时候,实时更新三个布告板,以便能及时、准确的获取信息。...

    程序员小跃
  • PHP设计模式之观察者模式

    观察者,貌似在很多科幻作品中都会有这个角色的出现。比如我很喜欢的一部美剧《危机边缘》,在这个剧集中,观察者不停的穿越时空记录着各种各样的人或事。但是,设计模式中...

    硬核项目经理
  • 设计模式学习之观察者模式

    如下内容是学习《Head First 设计模式》第二部分《观察者模式》所得,主要就是一些原文的摘抄和少量自己的总结。

    mzlogin

扫码关注腾讯云开发者

领取腾讯云代金券