介绍javascript设计模式的装饰器模式
注:对于另一类功能对象,通过一个类进行动态修改前后,给它添加一些额外的功能;这是一种对象函数的装饰、装饰和装饰都是类类,要求具有相同的访问方法(功能)。在一般的动态对象类中,为了实现相同的接口(接口)来实现装饰的约束;有一个参考在装饰中使用,相应的装饰方法,通过调用相应的装饰方法,然后进行修改;
现场实例:
1,例如,我们生活中的衣服,衬衫,西装外套,裤子,领带和一双漂亮的皮鞋,每一件都是用于正面或全身的装饰。
例如,我们有2个>。功能类,可以用来写日志,用户登录可以使用这样的功能,可能需要在登录成功后写入当前日志操作的信息,写一写额外的操作日志;日志之前,它仍然是太阳成功后写日志通用;板写日志,它是整体运作的信息也是一个登录过程;
因此,装饰器模式用于实现类似于两种操作的场景,即由装饰器扩展装饰器的功能对象本质上与原始方法的功能范围相同。
示例源代码
1。装饰品
复制代码代码如下所示:
功能磨损(){
}
wear.prototype.shirt =函数(){
衬衫
console.log(衬衫上的火);
}
2。装饰类
复制代码代码如下所示:
功能装饰(穿戴){
this.wear =穿;
}
decorator.prototype.shirt =函数(){
This.wear.Shirt();
/一件衬衫,我加了一条领带
}
三.使用方法
复制代码代码如下所示:
无磨损=新磨损();
var装饰器=新装饰器(磨损);
装饰师。衬衫();
这样,我们就可以实现穿衬衫的物体的动态膨胀和装饰,而不需要知道最初的装饰是如何执行的,只要我们知道它的功能是什么,那么我们知道我们还需要添加什么功能。
其他说明
装饰模式真的提出了面向对象的方法:扩展和打开、修改和关闭的原则;所有需要的功能方法都是在没有修改的情况下完成的。
装饰图案的一个主要特点是将装饰物引用到装饰物上,从而实现装饰物的未经修饰的装饰;
在模拟中:先穿上衬衫,然后系上领带,然后穿上套装的场景:上面的装饰是一样的:
2。装饰类:
复制代码代码如下所示:
功能装饰(穿戴){
this.wear =穿;
}
decorator.prototype.shirt =函数(){
(这件。衬衫);这里只穿衬衫;
}
三.创建一个领带类和一套类似于装饰子类的套装。
复制代码代码如下所示:
功能decorator_tie(装饰){
this.decorator =装饰;
}
decorator_tie.prototype.shirt =函数(){
(这个装饰师衬衫)。
console.log('wear领带了);
}
功能decorator_western(装饰){
this.decorator =装饰;
}
decorator_western.prototype.shirt =函数(){
This.decorator.Shirt();
console.log(诉讼);
}
使用方法:
复制代码代码如下所示:
/第一次穿上衬衫。
无磨损=新磨损();
var装饰器=新装饰器(磨损);
/ / decorator.shirt();
VaR的领带=新decorator_tie(装饰);
/ / tie.shirt();
/然后穿西装
西方=新decorator_western VaR(领带);
西式衬衫();
这是一个服装装饰的例子。