关键词:
订阅模式
订阅模式主要涉及到三种对象:订阅对象,发布对象,分发对象。
案例没对这三种对象做抽像,大家可以根据应用场景去扩展。
类图:
常用的实现方式:
订阅对象
//订阅对象 public class Subscribe { public string Name; public Subscribe(string name) { Name = name; } public void Receive(string message) { Console.WriteLine($"{Name}评价:{message}"); } }
发布对象
//发布对象 public class Publisher { public delegate void PublisherEventHandler(string message); public event PublisherEventHandler PublisherEvent; public void Publish() { PublisherEvent?.Invoke("这首歌曲真好听!"); } }
分发对象
//分发对象 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(); } }
调用
class Program { static void Main(string[] args) { var destributer=new Destributer(); destributer.Destribute(); Console.ReadLine(); } }
使用场景:
常用来解决消息的分发。
设计模式面对面之命令模式
命令模式类图: 常用的实现方式: 指令处理对象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()兄弟间... 查看详情