设计模式之观察者模式(订阅模式),jquery实现

<!doctype html>
<html lang="en">
 <head>
  <meta charset="UTF-8">
  <script type="text/javascript" src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>
  <script type="text/javascript">
  $(function(){
	//利用jquery带的on,off,trigger方法实现观察者模式(又名订阅者模式)

	var observice = $({});//生成订阅初始jquery对象

	observice.customers = [$({name:"Amy"})];//注册订阅对象

	observice.addCustomer = function(ob){//允许新增新的订阅对象
		observice.customers.push($(ob));
	}

	observice.publiced = function(name,message){//订阅消息发布接口
		$.each(observice.customers,function(i,ele){
			ele.trigger(name,message);
		})
	}

	observice.subscribe = function(name){//为订阅对象订阅消息类型
		$.each(observice.customers,function(i,ele){
			ele.on(name,function(e,message){
				console.log(message);
				alert(ele[0].name+'收到  '+name+' 订阅消息, '+'消息内容为: '+message.message);
			})
		})
	}

	observice.unsubscribe = function(name){//为订阅对象取消消息订阅
		$.each(observice.customers,function(i,ele){
			ele.off(name);
		})
	}
	
	//执行操作

	observice.addCustomer({name:"KDS"});

	observice.subscribe("s");
	observice.subscribe("a");
	observice.subscribe("篮球周刊");

	observice.unsubscribe("s");

	//observice.publiced("s");
	//observice.publiced("a");
	observice.publiced("篮球周刊",{'message':'奥多姆复婚,嫖娼挽回感情!'});


  });
  	
  </script>
  <title>观察者模式</title>
 </head>
 <body>
 </body>
</html>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值