设计模式面对面之订阅模式

author author     2022-09-29     763

关键词:

订阅模式

订阅模式主要涉及到三种对象:订阅对象,发布对象,分发对象。

案例没对这三种对象做抽像,大家可以根据应用场景去扩展。

类图:

技术分享技术分享

常用的实现方式:

订阅对象

技术分享
//订阅对象
public class Subscribe
    {

        public string Name;

        public Subscribe(string name)
        {
            Name = name;
        }
        public void Receive(string message)
        {
            Console.WriteLine($"{Name}评价:{message}");
        }
    }
View Code

发布对象

技术分享
//发布对象
 public class Publisher
    {
        public delegate void PublisherEventHandler(string message);
        public event PublisherEventHandler PublisherEvent;

        public void Publish()
        {
            PublisherEvent?.Invoke("这首歌曲真好听!");
        }

    }
View Code

 分发对象

技术分享
//分发对象
 public class Destributer
    {
        public void Destribute()
        {
            var subscribe1=new Subscribe("subscribe1");
            var subscribe2 = new Subscribe("subscribe2");

            var publisher = new Publisher();
            publisher.PublisherEvent += subscribe1.Receive;
            publisher.PublisherEvent += subscribe2.Receive;

            publisher.Publish();

        }

    }
View Code

 调用

技术分享
class Program
    {
        static void Main(string[] args)
        {
            var destributer=new Destributer();

            destributer.Destribute();
            Console.ReadLine();
        }
    }
View Code

 使用场景:

常用来解决消息的分发。

设计模式面对面之命令模式

命令模式类图: 常用的实现方式: 指令处理对象publicinterfaceIReceiver{voidOperation();}//endIReceiverViewCodepublicclassReceiverA:IReceiver{publicReceiverA(){}publicvoidOperation(){Console.WriteLine("由ReceiverA处理 查看详情

设计模式面对面之单例模式

单例模式类图:常用的实现方式:第一种线程安全publicsealedclassSingleton{publicstaticreadonlySingletonSingletonInstance=newSingleton();privateSingleton(){}}ViewCode 第二种单线程安全//第二种publicsealedclassSingletonLazy{privatesta 查看详情

设计模式面对面

定义:设计模式是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。目的:为了代码可重用性、让代码更容易被他人理解、保证代码可靠性,设计模式使代码编写真正工程化。使用:每一种设计模式都是在特... 查看详情

spring源码之七registerlisteners()及发布订阅模式

Spring源码之七registerListeners()及发布订阅模式大家好,我是程序员田同学。今天带大家解读refresh()方法中的registerListeners()方法,也就是我们经常说的Spring的发布-订阅模式。文章首先举一个发布-订阅模式的样例,然后讲解了发布-... 查看详情

designpattern之观察者模式

...rticle/details/51815880观察者模式介绍观察者模式又称为发布-订阅模式。定义了一种一对多的依赖关系,当被观察者对象状态发生改变时,通知所有依赖于它(订阅它)的观察者对象。RSS订阅和邮件订阅大家应该都知道,你订阅后,... 查看详情

异步编程解决方案之事件发布/订阅模式(代码片段)

...泛用于异步编程的模式,是回调函数的事件化,又称不发订阅模式。nodejs的events模块就是发布订阅模式的一个简单实现,不存在preventDefault,stopPropagation,stopImmediatePropagation,等控制事件传递的方法。它具有addListner/on(),once(),removeListn... 查看详情

观察者模式(observer)和发布(publish/订阅模式(subscribe)的区别

...okeeper里涉及发布和订阅问题。观察者模式之JAVA实现:JAVA设计模式之观察者模式发布订阅模式之JAVA实现:发布者订阅者模式之JAVA实现   观察者模式(Observer)和发布(Publish/订阅模式(Subscribe)的区别在翻阅资料的时... 查看详情

“一切都是消息”--msf(消息服务框架)之发布-订阅模式

...单的请求-响应模式的示例,今天来看看如何实现【发布-订阅】模式。简单来说,该模式的工作过程是:客户端发起订阅“服务器时间”服务--》服务器接受订阅--》服务器处理被订阅的服务方法--》服务器将处理结果推送... 查看详情

设计模式之观察者模式(代码片段)

认识观察者模式可以通过报纸和杂志的订阅了解原理:1、报社的业务就是出版报纸2、向某家报社订阅报纸,只要他们有新报纸出版,就会给你送来。只要你是他们的订户,你就会一直收到新报纸。3、当你不想再看报纸的时候,... 查看详情

设计模式之观察者模式

观察者模式观察者模式又被称作发布者订阅者模式,是一种管理对象行为和状态之间的关系的方法。这种模式的实质就是你可以对程序中的某个对象的状态进行观察,并且在其发生变化时能够得到通知。观察者模式存在两个角色... 查看详情

设计模式之观察者模式(代码片段)

观察者模式,又被称为发布-订阅模式或消息机制,定义了一种依赖关系,解决了主体对象与观察者之间功能耦合。虽然说观察者模式,又被称为发布-订阅模式,但是实际上它们之间存在差异的,区别在于调度的地方不同。上图... 查看详情

《设计模式之禅》笔记整理--面对对象设计六大原则

第一章、面对对象设计六大原则:(1)、单一职责原则:应该有且只有一个原因引起类的变更。为什么要用单一职责原则:(1)、类的复杂性降低,实现什么职责都有清晰明确的定义。           (2)、可读性提高,... 查看详情

在商城系统中使用设计模式----策略模式之在spring中使用观察者模式和发布/订阅

1.概念:观察者模式:  是属于设计者模式中的一种,一个目标对象管理所有相依于它的观察者对象,并且在它本身的状态改变时主动发出通知。发布/订阅:  是一种消息范式,消息的发送者(称为发布者)不会将消息直接... 查看详情

springboot2.0之整合activemq(发布订阅模式)

发布订阅模式与前面的点对点模式很类似,简直一毛一样 注意:发布订阅模式先启动消费者公用pom:<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org 查看详情

rabbitmq指南之三:发布/订阅模式(publish/subscribe)(代码片段)

原文:RabbitMQ指南之三:发布/订阅模式(Publish/Subscribe)  在上一章中,我们创建了一个工作队列,工作队列模式的设想是每一条消息只会被转发给一个消费者。本章将会讲解完全不一样的场景: 我们会把一个消息转发给多... 查看详情

23种设计模式之三(观察者模式)

观察者模式:(对象间的一种一对多依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新) 观察者模式又称为发布/订阅(Publish/Subscribe)模式,因此我们可以用报纸期刊的订阅来形象的说明... 查看详情

设计模式之观察者模式

什么是观察者模式?定义对象间的一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖他的对象都会得到通知并被自动更新。观察者模式用在哪?观察者模式的典型应用就是在类似的“订阅—发布”... 查看详情

react组件通信之发布订阅模式

React通信react的数据流是单向的,react通信有以下几种方式:父向子通信:传入props子向父通信:父组件向子组件传一个函数,然后通过这个函数的回调,拿到子组件传过来的值父向孙通信:利用context传值。React.createContext()兄弟间... 查看详情