简介

  1. 外观模式不仅简化类中的接口,而且对接口与调用者也进行了解耦。外观模式经常被认为开发者必备,它可以将一些复杂操作封装起来,并创建一个简单的接口用于调用<br /> 外观模式在JS中常常用于解决浏览器兼容性问题。

demo

对document对象添加click事件的时候

  1. function addEvent(dom, type, fn) {
  2. if (dom.addEventListener) { // 支持DOM2级事件处理方法的浏览器
  3. dom.addEventListener(type, fn, false)
  4. } else if (dom.attachEvent) { // 不支持DOM2级但支持attachEvent
  5. dom.attachEvent('on' + type, fn)
  6. } else {
  7. dom['on' + type] = fn // 都不支持的浏览器
  8. }
  9. }

使用场景

  • 在设计初期

    应该要有意识地将不同的两个层分离,比如经典的三层结构,在数据访问层和业务逻辑层、业务逻辑层和表示层之间建立外观 Facade。

  • 在开发阶段

    子系统往往因为不断的重构演化而变得越来越复杂,增加外观 Facade 可以提供一个简单的接口,减少他们之间的依赖。
    在维护一个遗留的大型系统时,可能这个系统已经很难维护了,这时候使用外观 Facade 也是非常合适的,为系系统开发一个外观 Facade 类,

    总结

    优点

    易于使用,而且本身也比较轻量级

    缺点

    外观模式被开发者连续使用时会产生一定的性能问题,因为在每次调用时都要检测功能的可用性。