设计模式-观察者设计模式练习

观察者设计模式:observer
面对解决的是 1对多 的问题。
也称为订阅发布模式。
解决的问题:
1:实现多个对象之间的松耦合。
2:当某一个对象执行了某个操作,其他的多个对象都可以接收到通知。
3:被通知接收信息的对象的数量是开放的。
实例:HR 通知 若干个面试者的。

    <script>
	//隶属于某个公司的hr 。
    // 属性:公司的名称,保存应聘者的信息的容器
    // 功能:添加观察者、删除观察者、通知观察者。
		 function HR(name){
 			this.name=name;
//保存应聘者的信息的容器
 			this.observers=[];
		}
 //HR的原型对象中添加上述的功能。
			HR.prototype.addObserver=function(obs){
					this.observers.push(obs);
}
//删除观察者
	HR.prototype.removeObserver=function(obs){
				var observers=this.observers;
				 //遍历所有的应聘者,相同的删除掉。
				for(var i=0; i<observers.length; i++){
				if(observers[i]===obs){
				var .removeObserver=observers.splice ( i , 1 ) [0];
				removeObserver.ubdate(removeObserver.name+"先生/女士:很遗憾,希望以后有合作的机会!");
				}		
			}
}
 //通知所有的观察者
	HR.prototype.notify=function(){
	//遍历所有的观察者,执行更新的方法
			var observers=this.observers;
			for(var i=0; i < observers.length ; i++){
					//通知所有遍历观察者,然后更新
					observers[i].ubdate(observers[i].name+"\t恭喜先生/女士:下周来"+this.name + "上班");
			}
}
  //面试者,观察者。 功能就是接收信息。
	function Observer(name){
		this.name=name;
}
/**
     *  //接收更新通知的方法
     * @param msg 接收到的信息
 */
	Observer.prototyle.update=function(msg){
		console.log(msg);
}
	var hr=new HR("JD");
	var gang=new Observers("小刚");
	var hua=new Observers("小花");
	var bai=new Observers("小白");

//删除小刚
hr.removeObserver(gang);

//通知其他人
	hr.notify();
	
 //前面学习的事件处理,就是观察者模式。
    document.body.addEventListener("click",function () {
        console.log ("body click")
    },false);
    document.addEventListener("click",function () {
        console.log ("document click")
    },false);

    document.body.click();
    </script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值