发布订阅模式

发布订阅模式

观察者和目标要相互知道

发布者和订阅者不用相互知道,通过第三方实现调度,属于经过解耦合的观察者模式

发布订阅模式_第1张图片

//public发布
//subscribe订阅
const PubSub = {
	message:{},
	//发布
	publish(data){
		if(!this.message[type]){
			return
		}
		this.message[type].forEach(item => {
			item(data)
		})
	},
	//订阅
	subscribe(type,cb){
		if(!this.message[type]){
			this.message[type] = [cb]
		}else{
			this.message[type].push(cb)
		}
	},
	//取消订阅
	unsubscribe(type,cb){
		if(!this.message[type]){
			return
		}
		if(!cb){
			//取消所有
			this.message[type] && (this.message[type].length = 0)
		}else{
			this.message[type] = this.message[type].filter(item => {
				item !== cb
			})
		}
	}
}
function testA(data){
	console.log('testA',data)
}
function testB(data){
	console.log('testB',data)
}
PubSub.subscribe('A',testA)
PubSub.subscribe('B',testB)

bscribe(‘A’,testA)
PubSub.subscribe(‘B’,testB)


你可能感兴趣的:(设计模式,js设计模式)