外观模式

本文共--字 阅读约--分钟 | 浏览: -- Last Updated: 2021-12-15

外观模式(Facade):为一组复杂的子系统提供一个更高级的统一接口,通过这个接口使得对子系统接口的访问更容易。

当我们统一功能接口的方法不统一,就可以使用外观模式定义一个统一接口方法,简化了我们对复杂的底层接口不统一的使用需求。

比如,我们对事件绑定的hack处理,外观模式更可以理解为一种hack兼容,在实际应用中,常常因为由于代码的运行平台各异,需要编写额外代码兼容提供相同功能的不同方法。

function addEvent(dom, type, fn) {
  if (dom.addEventListener) {
    dom.addEventListener(type, fn, false);
  } else if (dom.attachEvent) {
    dom.attachEvent('on' + type, fn);
  } else {
    dom['on'+type] = fn;
  }
}

另外,很多代码库中都是通过外观模式来封装多个功能,简化底层操作方法。

var A = {
  g: function (id) {
    return document.getElementById(id);
  },
  css: function (id, key, value) {
    this.g(id).style[key] = vale;
  },
  attr: function (id, key, value) {
    this.g(id)[key] = value;
  }
}

外观模式是对接口方法的外层封装,以供上层代码调用。这样是一种松散耦合,使得系统和客户(使用者)不会因结构变化而相互影响。