WEB开发网
开发学院网页设计JavaScript 软件设计模式在JavaScript中的应用 阅读

软件设计模式在JavaScript中的应用

 2010-09-14 13:32:10 来源:WEB开发网   
核心提示: 【备注】面向方面编程(AOP),是一种改进已经存在的模式和发现新模式的方法,软件设计模式在JavaScript中的应用(5),面向方面的编程能够独立于任何继承层次结构而应用改变类或对象行为的方面,然后,现在,不妨让我们观察一下列表3中定义的代码,在运行时或编译时应用这些方面,AOP编程引入

【备注】面向方面编程(AOP),是一种改进已经存在的模式和发现新模式的方法。面向方面的编程能够独立于任何继承层次结构而应用改变类或对象行为的方面。然后,在运行时或编译时应用这些方面。AOP编程引入了一组新概念:接合点(Joinpoint)—代码中定义明确的可识别的点。切点(Pointcut)—通过配置或编码指定接合点的一种方法。通知(Advice)—表示需要执行交叉切割动作的一种方法。混入(Mixin)—通过将一个类的实例混入目标类的实例引入新行为。对于好的编程来说,设计模式已经变成了常用的方式。AOP可以给我们实际上,横切关注点代码的注入,因此说它也就是一种新式类型的软件设计模式。

(2)举例

有意思的是,我们也可以把Decorator模式应用于JavaScript中实现面向方面编程(AOP)。现在,不妨让我们观察一下列表3中定义的代码。

列表3:使用Decorator模式在JavaScript中实现面向方面编程(AOP)

function Decorator(object){
object.setup=function(method){
//如果从未执行过Setup方法,则进行初始化
if(!(‘_’+method in object)){
//保留原有的method方法
object[‘_’+method]=object[method];
//初始化前置和后置通知的列表
object[‘beforeAdvice_’+method]=[];
object[‘afterAdvice_’+method] =[];
//改写method方法
object[method]=function(){
//前置通知列表
var before=this[‘beforeAdvice_’+method];
//后置通知列表
var after=this[‘afterAdvice_’+method];
//返回值
var ret;
//执行前置通知中的函数
for(var i=0; i<before.length; i++) {
before[i].call(this,arguments);
}
//执行原有的方法
ret=this[‘_’ +method](arguments);
//调用后置通知中的函数
for (var i=; i<after.1ength; i++){
after[i].call(this, arguments);
}
//返回原有方法的返回值
return ret;
}
}
};
//添加前置通知
object.addBeforeAdvice=function(method, f) {
object.setup(method);
//最后添加的前置通知将最先被执行
object[‘beforeAdvice_’ +method].unshift(f);
};
//添加后置通知
object.addAfterAdvice=function(method, f) {
object.Setup(method);
//最后添加的后置通知将最后被执行
object[‘afterAdvice_’ +method].push(f);
};
}

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:软件 设计模式 JavaScript

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接