装饰着模式,在不改变源对象的基础上,通过对其进行包装拓展使原有对象可以满足用户的更复杂需求
这里我拿给输入框添加事件举例
var decorator = function(input ,fn) {
//获取时间源
var input = document.getElementById(input);
if(typeof input.onclick === 'function'){
//缓存事件源原有的回调函数
var oldClickFn = input.onclick;
input.onclick = function (ev) {
oldClickFn();
fn();
}
}else{
input.onclick = fn;
}
}
装饰着模式很简单,就是对原有对象的属性和方法的添加。相比于之前说的适配器模式是对原有对象的适配,添加的方法和原有的方法功能上大致相似。但是装饰着提供的方法和原有方法功能项则有一定的区别,且不需要去了解原有对象的功能。只要原封不动的去使用就行。不需要知道具体的实现细节。