首页 > 其他分享 >观察者模式和发布订阅模式的区别

观察者模式和发布订阅模式的区别

时间:2023-12-21 12:15:29浏览次数:28  
标签:订阅 观察者 模式 Listener 事件 中介 push

观察者模式只有两个对象,一个是观察者(Listener)和被观察者;

观察者通过实现被被观察者提供的接口,add到被观察者的Listener列表里;

当被观察者内部产生相关事件时,通过其Listener列表来通知观察者;

 

而发布定义模式则多了一个中介(比如Kafka),即分为了生产者、中介、消费者三个角色了;

生产者产生事件后,将事件类型和事件内容发布到中介上;而消费者通过定义相关的事件类型来接收相关的事件通知;

这个接收可以是应用主动poll(pull)和push(中介来push,或者client库通过长连接轮休模拟服务端push到应用代码里)的;

标签:订阅,观察者,模式,Listener,事件,中介,push
From: https://www.cnblogs.com/silentdoer/p/17918674.html

相关文章

  • windows进入安全模式
    administrator权限不足时,可以到安全模式下有system权限管理员唤起cmd启用administrator用户netuseradministrator/active:yes设置/修改密码netuseradministratornew_password 输入msconfig常规--有选择启动--只保留使用原始引导配置 引导--安全引导--最小 ......
  • 工厂模式 Factory Method
    一、简单工厂定义一个工厂类,根据传入的参数的值的不同返回不同是实例1、特点被创建的实例具有共同的父类或接口2、适用场景需要创建的对象较少客户端(应用层)只知道传入工厂的参数,对如何创建对象(逻辑)不关心3、优缺点优点:可以对创建的对象进行“加工”,对客户端隐藏相关......
  • 抽象工厂模式 Abstract Factory
    一、定义提供一个创建一系列相关或相互依赖对象的接口抽象工厂模式侧重的是同一产品族,而抽象工厂侧重的是同一产品等级二、适用场景客户端(应用层)不依赖于产品类实例如何被创建、实现等细节强调一些列相关的产品对象(属于同一产品族)一起使用,创建对象需要大量复杂代码提......
  • 深入 K8s 网络原理(二)- Service iptables 模式分析
    目录1.概述2.准备Service和Pods资源3.K8s里Service的实现原理3.1kube-proxy组件3.2iptables简介3.3iptables规则3.3.1Service,Pod和Host信息3.3.2从NodePort入手寻找iptables规则3.3.3从PREROUTING和OUTPUT链寻找K8s相关子链3.3.4总结下4.总结1......
  • 软件设计模式基本知识点
         ......
  • java设计模式
    三大种类型的设计模式创建型模式:关注对象的创建过程。结构型模式:关注对象与类的组织模式行为型模式:关注对象之间的交互23种设计模式简单工厂模式定义:根据参数的不同返回不同类的实例。工厂方法模式定义:通过工厂子类来确定究竟应该实例化哪一个具体产品类例子:日志记录器......
  • 命令模式
    #include<iostream>#include<vector>usingnamespacestd;classLight{public:voidon(){cout<<"灯亮了"<<endl;}voidoff(){cout<<"灯灭了"<<endl;}};//turn......
  • docker网络模式
    Docker网络我们使用容器,不单是运行单机程序,当然是需要运行网络服务在容器中,那么如何配置docker的容器网络,基础网络配置,网桥配置,端口映射,还是很重要。docker网络功能docker的网络功能就是利用Linux的networknamespace,networkbridge,虚拟网络设备实现的。默认情况下,docker安装......
  • 小谈设计模式(26)—中介者模式
    (小谈设计模式(26)—中介者模式)专栏介绍主要对目前市面上常见的23种设计模式进行逐一分析和总结,希望有兴趣的小伙伴们可以看一下,会持续更新的。希望各位可以监督我,我们一起学习进步,加油,各位。中介者模式中介者模式(MediatorPattern)是一种行为型设计模式,它通过将对象之间的通信......
  • 设计模式—代理模式
    介绍代码接口创建接口ImagepublicinterfaceImage{voiddisplay();}实体类创建实体类RealImagepublicclassRealImageimplementsImage{privateStringfileName;publicRealImage(StringfileName){this.fileName=fileName;......