Factory Method(二)

本文介绍了Observer模式的概念及其应用场景,并通过JavaScript实现了一种简单的事件处理机制。该模式适用于需要定义对象间一对多依赖关系的情况,当一个对象状态改变时,所有依赖对象能够自动更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

5.Observer模式<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

(1)概念
使用Observer模式的目的是为了定义对象之间一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并且自动更新。在以下情况下,一般可以考虑使用Observer模式。
·当一个抽象模型有两个方面,其中一个方面依赖于另一方面。将这二者封装在独立的对象中以便使它们可以各自独立地改变和复用。
·当对一个对象的改变需要同时改变其他对象,而不知道具体有多少对象有待改变。
·当一个对象必须通知其他对象,而它又不能假定其他对象是谁。换言之,你不希望这些对象是紧密耦合的。

(2)举例
下面,我们将应用Observer模式实现简单的JavaScript事件处理机制。首先需要做一些准备工作,即对Array对象进行扩展,为其增加indexOf和removeAt方法,代码如下:

//扩展destination对象的属性,将source对象的所有属性复制到destination对象
Object.extend=function(destination,source){
for(property in source){
destination[property]=source[property];
}
return destination;
}
//扩展Array对象的属性
Object.extend(Array.prototype,{
//在数组中查找object对象
indexOf: function (object){
for(var i=0,1ength=this.length; i<length; i++)
     if(this[i]==object) return i;
return -1;
},
//将数组中指定位置的元素删除
removeAt: function (index){
if(index<0 || index>=this.length) return null;
switch(index){
case 0:
return this.shift();
break;
case this.length -1:
return this.pop();
break;
default:
var head=this.s1ice(0,index);
var tail=this.s1ice(index+1);
var ele=this[index];
this=head.concat(tail);
return ele;
break;
}
}
});

转载于:https://my.oschina.net/guanxinsui/blog/914197

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值