设计模式之结构型外观模式

为一组复杂的子系统接口提供一个更高级的统一接口,通过这个接口使得对子系统接口的访问更加容易,有时也会用于对底层结构兼容性做统一封装来简化用户使用,为功能统一但方法不统一的接口提供一个统一的接口。

// 外观模式实现
function addEvent(dom, type, fn) {
  // 对于支持DOM2级事件处理程序的浏览器
  if(dom.addEventListener) {
    dom.addEventListener(type, fn, false);
  // 对于不支持addEventListener但支持attachEvent的浏览器
  } else if(dom.attachEvent) {
    dom.attachEvent('on' + type, fn);
  } else {
    dom['on' + type] = fn;
  }
}

当一个复杂的系统提供一系列复杂的接口方法时,为系统的管理方便会造成接口方法的使用及其复杂。通过外观模式,对接口进行二次封装可以隐藏其复杂性。

原文地址:https://www.cnblogs.com/camille666/p/design_pattern_struct_facade.html