装饰者模式

装饰者模式(Decorator):在不改变原对象的基础上,通过对其进行包装拓展(添加属性或者方法)使原有对象可以满足用户更复杂的需求。
在原有基础上添加新的功能来满足用户的需求

var decorator = function(input,fn){
    //获取事件源
    var input = document.getElementById(input);
    //如果事件源已经绑定事件
    if(typeof input.onclick === 'function'){
        //缓存事件源原有的回调函数
        var oldClickFn = input.onclick;
        input.onclick = function(){
            //事件源原有回调函数
            oldClickFn()
            fn();
        }
    }else{
        //事件源未绑定事件就直接为事件源添加新增的回调函数
        input.onclick = fu;
    }
}

适配器模式也是对对象的修饰来适配其他对象,与装饰者模式的不同之处在于适配器方法是对原有对象进行适配,添加的方法与原有方法功能大致类似,而装饰者模式提供的方法与原来的方法功能项有区别,使用适配器对新增的方法也是要调用原来的方法,但是在装饰者模式不需要了解对象原有的功能,并且对象原有的方法照样可以原封不动的使用。

设计模式 文章被收录于专栏

设计模式

全部评论

相关推荐

我是没经验的毕业生,这啥情况啊会不会是hr在刷kpi
JamesGosli...:字节boss属于是群发了,我都快入职字节了,其他部门还在和我boss打招呼
点赞 评论 收藏
分享
湫湫湫不会java:先投着吧,大概率找不到实习,没实习的时候再加个项目,然后把个人评价和荣誉奖项删了,赶紧成为八股战神吧,没实习没学历,秋招机会估计不多,把握机会。或者说秋招时间去冲实习,春招冲offer,但是压力会比较大
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务