设计模式7—装饰者模式【结构型】

参考:http://blog.chinaunix.net/uid-26672038-id-4364155.html

装饰者模式特点:【看书

    1. 不修改原对象的原本结构来进行功能添加。
    2. 装饰对象和原对象具有相同的接口,可以使客户以与原对象相同的方式使用装饰对象。
    3. 装饰对象中包含原对象的引用,即装饰对象为真正的原对象在此包装的对象。

 

 

装饰函数:这个 还是 比较有用的,比如我们想给 window 绑定 onload 事件,但是 又不确定 这个事件是不是已经被其他人绑定过,为了避免 覆盖 掉之前的 window.onload 函数 的行为,

   我们一般都会先保存好原先的window.onload,把他放入新的 window.onload 里执行:

window.onload = function(){
  alert(1)    
}

var _onload = window.onload || function(){};

window.onload = function(){
  _onload();
  alert(1);
}

实践案例:在给 浙里办项目【该项目使用jQuery开发】中 修改引入的 JS-SDK 版本【JS_SDK.js发布在CDN上】时,因为 新版 JS-SDK 中 使用了 window.onload, 而 项目中的 js也使用了window.onload。

       结果导致JS_SDK中的 window.onload 被覆盖,失去效用。当时 没有 想到 用 装饰者模式 可以解决这个问题,是通过 jQuery 的 onload 方法去解决的【jQuery的onload是可以多次绑定 事件函数的】。

 

posted @ 2021-03-11 22:12  吴飞ff  阅读(37)  评论(0编辑  收藏  举报