为一组复杂的子系统接口提供一个更高级的统一接口,通过这个接口使得对子系统接口的访问更加容易,有时也会用于对底层结构兼容性做统一封装来简化用户使用,为功能统一但方法不统一的接口提供一个统一的接口。
// 外观模式实现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; }}
当一个复杂的系统提供一系列复杂的接口方法时,为系统的管理方便会造成接口方法的使用及其复杂。通过外观模式,对接口进行二次封装可以隐藏其复杂性。