携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第21天,点击查看活动详情
前言
作为一个前端切图仔,少有和各类设计模式打交道。但这不影响我们学习设计模式的思维,来提升我们的代码水平。
本章通过讲解发布-订阅模式,希望能够让你对设计模式更一步的学习。
本章学习内容👇
- 认识发布-订阅模式
- 发布-订阅模式的优点
发布-订阅模式
发布—订阅模式是什么?
发布—订阅模式又叫观察者模式。它定义对象间一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于这个状态的对象都将得到通知。
能不能更通俗地说明?
在发布-订阅模式内的对象有俩个身份,一个是订阅者,一个是发布者。
订阅者订阅发布者的状态(属性),发布者在状态(属性)改变时通知它的订阅者。
这个模式在我们生活中非常常见,就拿银行卡交易信息短信服务举例。
example:
小明经常涉及到资金转账和收帐,反复的去查询银行余额是否扣除/收款与否让他感到苦恼。这个时候银行告诉他,你只需要花20元订阅银行卡交易信息。这样每次银行卡账目发生变化时,我们都会给你发短信来通知你。
这就是一对一的发布订阅者模式。但是我们不是说订阅者模式是一对多吗?
当然,不止小明一个人可以这样订阅服务。小明的老婆也可以通过这个方式订阅小明银行卡的一举一动,从而实现了一对多的特点。
发布-订阅模式的优点
通过上面的例子我们很清晰的感受到发布-订阅模式的优点:
订阅者不用再手动去查询发布者的状态更新与否,发布者在状态改变时,会自动通知- 可以存在多个
订阅者同时订阅发布者。即便小明离婚了,他的新老婆也可以同样订阅这个服务。
第一个优点说明发布-订阅模式能够广泛应用于异步编程中,同时也能作为一种代替回调函数的方案;
第二个优点说明发布-订阅模式能够让两个对象松耦合的联系在一起。双方不用在意对方的实现细节,只需要做到状态的发出以及接收即可。且当出现新的订阅者时,也不会影响之前的订阅关系。
尾声
发布-订阅模式在浏览器前端中的实现是如何呢?欢迎点击右边导航查看。