您当前的位置: 首页 > 

暂无认证

  • 0浏览

    0关注

    92582博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

设计模式-装饰者模式

发布时间:2021-06-12 13:26:58 ,浏览量:0

目录
  • 1、概念
  • 2、例如
  • 3、适用的场景
  • 4、用AOP装饰函数实现装饰者模式
1、概念

在不改变对象自身的基础上,在程序运行期间给对象动态地添加方法。

2、例如

现有4种型号的自行车分别被定义成一个单独的类,如果给每辆自行车都加上前灯、尾灯、铃铛这3个配件,如果用类继承的方式,需要创建4 * 3 = 12个子类。但如果通过装饰者模式,只需要创建3个类。

3、适用的场景

原有方法维持不变,在原有方法上再挂载其他方法来满足现有需求;函数的解耦,将函数拆分成多个可复用的函数,再将拆分出来的函数挂载到某个函数上,实现相同的效果但增强了复用性。

4、用AOP装饰函数实现装饰者模式
Function.prototype.before = function(beforefn) { // 保存原函数引用 let self = this; // 返回包含了原函数和新函数的'代理函数' return function() { // 执行新函数,修正this beforefn.apply(this, arguments); // 执行原函数 return self.apply(this, arguments); }; }; Function.prototype.after = function(afterfn) { let self = this; return function() { let ret = self.apply(this, arguments); afterfn.apply(this, arguments); return ret; }; }; let func = function() { console.log('2'); }; // func1和func3为挂载函数 let func1 = function() { console.log('1'); }; let func3 = function() { console.log('3'); }; func = func.before(func1).after(func3); func(); // 1  2  3 
关注
打赏
1653961664
查看更多评论
立即登录/注册

微信扫码登录

0.3801s