装饰者模式

发布时间:2017-7-1 11:50:29编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"装饰者模式 ",主要涉及到装饰者模式 方面的内容,对于装饰者模式 感兴趣的同学可以参考一下。

装饰者模式

装饰者与继承?

使用继承,完成一些复用的功能,有可能创建出大量的子类。

例:4种不同类型的自行车。假设需要给他们分别装上 前灯,尾灯,铃铛3种配件。3*4=12个子类。。

若将配件以对象动态组合到自行车,只需增加3个类。??有“即用即付” 方式?

装饰者:将一个对象嵌入另一个对象之中,形成一条包装链,依次传递到所有的对象,没个对象都有处理这条请求的机会。

一。装饰的一种表现:缺点:1.中间变量增多 2.this会遇到劫持的问题。

window.onload = function(argument) {  //别人写的。	alert(1);}var _onload = window.onload || function(){};   //因为都是window,没有发生劫持,假如是 document.getElementById;window.onload = function(){	_onload();   //假如是document.getElementById;,这个就获取不到id,因为this变成了window...	alert(2);  //我们增加的。缺点:中间变量增多 2.this会遇到劫持的问题。}

 

二。AOP装饰函数。

 

//应用实例:
// 1.统计上报 2.动态改变函数参数。 (before)3.插件式表单

1.插件式表单:将validate和fromSubmit分开。

 fromSubmit.before( validate );

2.动态改变函数参数。 假如在没个ajax中需要加个传token参数。 

var ajax = ajax.before( function( type, url, param ){
        param.Token = getToken();
})

3.

Function.prototype.after = function( fn ){	var self = this;	return function(){		var ret = self.apply( this, arguments );		if( ret == false ){			return fn.apply( this, arguments );		}		return ret;	}}Function.prototype.before = function( fn ){	var self = this;	return function(){		fn.apply( this, arguments );		return self.apply( this, arguments );	}}

  

注意:
如果在原函数上保存了一些属性,那么这些属性会丢失。

var func = function(){	alert(1);};func.a = 'a';func = func.after( function(){	alert(2);})alert( func.a )  //undefined



上一篇:关于数据倾斜
下一篇:nginx配置长连接

相关文章

关键词: 装饰者模式

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。

好贷网好贷款