Skip to content

Latest commit

 

History

History
24 lines (20 loc) · 944 Bytes

File metadata and controls

24 lines (20 loc) · 944 Bytes

四. 装饰者模式

在不改变源对象的基础上,通过对其进行包装拓展使原有对象可以满足用户的更复杂需求

这里拿给输入框添加事件举例

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;
  }
};

装饰着模式很简单,就是对原有对象的属性和方法的添加。相比于之前说的适配器模式是对原有对象的适配,添加的方法和原有的方法功能上大致相似。但是装饰着提供的方法和原有方法功能项则有一定的区别,且不需要去了解原有对象的功能。只要原封不动的去使用就行。不需要知道具体的实现细节。