<!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>
设计模式之观察者模式(订阅模式),jquery实现
最新推荐文章于 2021-08-05 20:43:18 发布