有好多人一提到发布、订阅模式就头大,不了解的人就会想,他是干什么的啊 和观察者模式有什么区别呢
其实发布订阅模式和观察者模式的区别还是很大的,订阅发布模式比观察者模式多一个调度的部分
function pubSub() { var topics = {}; function subScribe(topic, fn) { if (!topics[topic]) { topics[topic] = []; } //并未去重,如果去重的话不能使用解构赋值,因为[...new Set(arr)]这种方式只能去重基本数值类型,fn是函数引用类型 topics[topic].push(fn); } function publish(topic, ...args) { // console.log(topics[topic].length) if (!topics[topic]) return; // 迭代相同topic值对应的函数 for (let fn of topics[topic]) { fn(...args) } } return { subScribe, publish } } var pubSub1 = new pubSub(); pubSub1.subScribe(‘add‘, function (a, b) { console.log(a + b) }) pubSub1.subScribe(‘minus‘, function (a, b) { console.log(a - b) })
看完这个是不是感觉发布订阅模式很简单呢
原文:https://www.cnblogs.com/wb336035888/p/12530234.html