凌晨不睡觉

V1

2022/11/01阅读:28主题:锤子便签主题第2版

如何记住观察者模式跟发布-订阅模式的区别

前言

先说下如何简单粗暴的记住这二者之间的区别:

观察者模式跟发布-订阅模式,记住发布-订阅模式直接的小横杠连接符即可。

这个连接符就是观察者模式跟发布-订阅模式最大的不同,即是否经过中间人代理转发。

但是观察者模式跟发布-订阅模式二者之间的关系其实谈不上异同,具体解析请看正文。

观察者模式跟发布-订阅模式的关系

先简述下二者的定义:

观察者模式的定义是:对象间的一种一对多的依赖关系,以便当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动刷新。

发布-订阅模式的定义是:消息的发送者(称为发布者)不会将消息直接发送给特定的接收者(称为订阅者)。而是将发布的消息分为不同的类别,无需了解哪些订阅者(如果有的话)可能存在。同样的,订阅者可以表达对一个或多个类别的兴趣,只接收感兴趣的消息,无需了解哪些发布者(如果有的话)存在。

不难看出发布-订阅模式是完全符合观察者模式的定义。

这两位之所以如此其实是因为发布-订阅模式并不是初始的23种设计模式之一而是脱胎于观察者模式的,或者说是一种常用的观察者模式的形式。所以二者之间弹不道

一个简单的观察者模式中目标的状态发生改变时需要自己去通知观察者,观察者与被目标之间是耦合的,模块之间耦合的利弊不必多说,想要解耦的话那么比如要有一个中间件来进行代理,于是订阅-发布模式就应运而生了。

分类:

前端

标签:

数据结构与算法

作者介绍

凌晨不睡觉
V1