JavaScript设计模式-观察者模式

    观察者模式也可以称为订阅模式,是一种从发布,到订阅,再到通知的过程。

    首先说什么是观察者模式:观察者模式就是定义了一个对象一对多的关系,让多个观察者同时监听一个大对象,当一个大对象发生变化时,所有的依赖它的对象都会得到通知。

    比如说:淘宝上某店铺的某品牌的鞋子,有两个买家小张和小王,让他们去买鞋的时候,发现鞋子断码了,他们都问店主,这个鞋的码什么时候有货,店主回复他们说,点一下到货通知,货到了会通知你们。等到货了,通知他们,这个过程就是观察者模式的过程。

        观察者模式(订阅模式)

        以下说订阅模式(字少好打字)
        订阅模式有五个重要的模块,分别是:发布者、发布列表、增加订阅者、发布消息、订阅者收到订阅消息。
        发布者
        很容易想到发布者肯定是一个一个对象
var obj = {}//发布者
        发布列表
        发布列表是发布者的一个方法(功能),用来存储订阅者的信息。
obj.list = []//发布列表
        增加订阅者
obj.listen = function(key,fn){
	if(!this.list[key]){
		this.list[key] = [];
	}
	this.list[key].push(fn);

}
            fn为回调函数,作为传入订阅者的信息。key值作为,每个订阅者订阅的不同商品,相同的放在一起。
        发布消息
obj.message = function(){
	var key = Array.prototype.shift.call(arguments); 		//取出消息类型名称,这里是红色
	var fns = this.list[key];		//取出消息对应回调函数集合
	if(!fns || fns.length == 0){		//如果没有订阅这个消息,直接返回
		console.log(key + "还没有上货,请静心等待...");
		return ;
	}
	for(var i = 0,fn; fn = fns[i++] ; ){
		fn.apply(this,arguments);
	}
}
        订阅者接受消息
obj.listen("红色",function(size){	//订阅者
	console.log("尺寸 :" + size);
})
obj.message("黑色",40);obj.message("红色",40);
        这就是观察者模式。

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值