您的位置:首页 > 其它

设计模式之结构型装饰者模式

2014-05-21 09:55 302 查看
在不改变原对象的基础上,通过对其进行包装扩展(添加属性或者方法)使原有对象可以满足用户的更复杂需求。
静止是相对的,运动是绝对的,所以没有一成不变的需求。在实际项目开发中需求总在不断变化,当原有的功能已经不能满足用户的需求时,我们要做的就是在这个基础上添砖加瓦,设置新功能和属性来满足用户提出的需求,这就是装饰者模式要做的。
装饰者模式对对象的扩展是一种良性扩展,不用了解其具体实现,只是在外部进行了一次封装扩展。

// 装饰者
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 = fn;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: