• 观察者模式和订阅-发布模式的区别


     观察者模式:

    var subject = {
    	observers: [],
    	notify() {
    		this.observers.forEach(observer =>{
    			observer.update()
    		})
    	},
    	attach (observer) {
    		this.observers.push(observer)
    	}
    }
    var observer = {
    	update(){
    		alert('updated')
    	}
    }
    subject.attach(observer)
    subject.notify()

    观察者和倍观察这直接沟通, 耦合性强

    订阅发布模式:

    var publisher = {
    	publish(pubsub) {
    		pubsub.publish()
    	}
    }
    var pubsub = {
    	subscribes: [],
    	publish() {
    		this.subscribes.forEach(subscribe =>{
    			subscribe.update();
    		})
    	},
    	subscribe(sub) {
    		this.subscribes.push(sub)
    	}
    }
    var subscribe = {
    	update() {
    		console.log('update')
    	},
            subscribe(pubsub) {
                pubsub.subscribe(this);
            }
    }
    subscribe.subscribe(pubsub)
    publisher.publish(pubsub)
    

    订阅者,发布者,不直接沟通,中间通过事件中间者沟通。

    区别与适用场景

    总的来说,发布-订阅模式适合更复杂的场景。

    在「一对多」的场景下,发布者的某次更新只想通知它的部分订阅者

    在「多对一」或者「多对多」场景下。一个订阅者依赖于多个发布者,某个发布者更新后是否需要通知订阅者?还是等所有发布者都更新完毕再通知订阅者?

  • 相关阅读:
    高并发下秒杀商品,必须知道的9个细节
    linux下关闭网络命令
    Linux系统模拟网络测试
    20211215
    观影大数据分析(上)
    2021冬季学期有感
    观影大数据分析(中)
    Docker安装Oracle
    2022寒假安排
    Docker安装Mongo
  • 原文地址:https://www.cnblogs.com/bigman-bugman/p/12274487.html
Copyright © 2020-2023  润新知