JavaScript设计模式(八):套餐服务-外观模式

简介: 套餐服务-外观模式

外观模式(Facade)

为一组复杂的子系统接口提供一个更高级的统一接口,通过这个接口使得对子系统接口访问更容易

在JavaScript中有时也会用于对底层结构兼容性统一封装简化用户使用

需求:为指定按钮添加一个事件

document.onclick = function (e) {
   
    if (e.target === document.getElementById('btn01')) {
   
        alert('btn01 的点击事件');
    }
};
  • ⚠ 注意:以上方法的缺点:

    • document 绑定了 onclick 事件,但 onclickDOM0级事件,也就是说这种方式绑定的事件相当于为元素绑定一个事件方法,所以如果团队中有人再次通过这种方式为 document 绑定 click 事件时,就相当于重复定义了一个方法,会将你定义的 click 事件方法覆盖,如下列程序:

        document.onclick = function (e) {
             
            if (e.target === document.getElementById('btn01')) {
             
                alert('btn01 的点击事件');
            }
        };
      
        document.onclick = function (e){
             
            console.log('document事件覆盖掉了上边的事件');
        };
      
  • 外观模式实现优化:应使用 DOM2级事件 处理程序提供的方法 addEventListener 来实现

      // 外观模式实现
      function addEvent(dom, type, fn) {
         
          // 对于支持DOM2级事件处理程序addEventListener方法的浏览器
          if (dom.addEventListener) {
         
              dom.addEventListener(type, fn, false);
              // 对于不支持addEventListener方法但支持attachEvent方法的浏览器
          } else if (dom.attachEvent) {
         
              dom.attachEvent('on' + type, fn);
              // 对于不支持addEventListener方法也不支持attachEvent方法,但支持on+'事件名'的浏览器
          } else {
         
              dom['on' + type] = fn;
          }
      }
    
      addEvent(document.getElementById('btn01'), 'click', function (e) {
         
          alert('btn01 的点击事件');
      });
    
      addEvent(document, 'click', function (e) {
         
          console.log('document事件覆盖掉了上边的事件');
      });
    

特点:

规整复杂接口,解决兼容问题

目录
相关文章
|
7月前
|
设计模式 Java 数据库连接
【设计模式】【结构型模式】外观模式(Facde)
一、入门 什么是外观模式? 一种结构型设计模式,通过为子系统中的一组接口提供一个统一的高层接口(称为外观),来简化客户端与复杂子系统的交互过程。其本质是建立抽象层来隔离复杂度。 为什么要有外观模式?
297 9
|
Web App开发 JavaScript 前端开发
构建高效后端服务:Node.js与Express框架的实战指南
【9月更文挑战第6天】在数字化时代的潮流中,后端开发作为支撑现代Web和移动应用的核心,其重要性不言而喻。本文将深入浅出地介绍如何使用Node.js及其流行的框架Express来搭建一个高效、可扩展的后端服务。通过具体的代码示例和实践技巧,我们将探索如何利用这两个强大的工具提升开发效率和应用性能。无论你是后端开发的新手还是希望提高现有项目质量的老手,这篇文章都将为你提供有价值的见解和指导。
|
11月前
|
设计模式 缓存 应用服务中间件
「全网最细 + 实战源码案例」设计模式——外观模式
外观模式(Facade Pattern)是一种结构型设计模式,旨在为复杂的子系统提供一个统一且简化的接口。通过封装多个子系统的复杂性,外观模式使外部调用更加简单、易用。例如,在智能家居系统中,外观类可以同时控制空调、灯光和电视的开关,而用户只需发出一个指令即可。
288 69
|
JavaScript 前端开发 中间件
构建高效后端服务:Node.js与Express框架的完美搭档
【8月更文挑战第28天】在追求高性能、可扩展和易维护的后端开发领域,Node.js和Express框架的组合提供了一种轻量级且灵活的解决方案。本文将深入探讨如何利用这一组合打造高效的后端服务,并通过实际代码示例展示其实现过程。
|
设计模式 JavaScript 前端开发
JavaScript设计模式--访问者模式
【10月更文挑战第1天】
305 124
|
10月前
|
设计模式 JavaScript 算法
浅谈几种js设计模式
设计模式是软件开发中的宝贵工具,能够提高代码的可维护性和扩展性。通过单例模式、工厂模式、观察者模式和策略模式,我们可以解决不同场景下的实际问题,编写更加优雅和高效的代码。
306 8
|
设计模式 前端开发 JavaScript
JavaScript设计模式及其在实战中的应用,涵盖单例、工厂、观察者、装饰器和策略模式
本文深入探讨了JavaScript设计模式及其在实战中的应用,涵盖单例、工厂、观察者、装饰器和策略模式,结合电商网站案例,展示了设计模式如何提升代码的可维护性、扩展性和可读性,强调了其在前端开发中的重要性。
181 2
|
设计模式 存储 Java
【九】设计模式~~~结构型模式~~~外观模式(Java)
文章详细介绍了外观模式(Facade Pattern),这是一种对象结构型模式,通过引入一个外观类来简化客户端与多个子系统之间的交互,降低系统的耦合度,并提供一个统一的高层接口来使用子系统。通过文件加密模块的实例,展示了外观模式的动机、定义、结构、优点、缺点以及适用场景,并讨论了如何通过引入抽象外观类来提高系统的可扩展性。
【九】设计模式~~~结构型模式~~~外观模式(Java)
|
设计模式 Java
Java设计模式-外观模式(11)
Java设计模式-外观模式(11)
138 1
|
设计模式 JavaScript 前端开发
从工厂到单例再到策略:Vue.js高效应用JavaScript设计模式
【8月更文挑战第30天】在现代Web开发中,结合使用JavaScript设计模式与框架如Vue.js能显著提升代码质量和项目的可维护性。本文探讨了常见JavaScript设计模式及其在Vue.js中的应用。通过具体示例介绍了工厂模式、单例模式和策略模式的应用场景及其实现方法。例如,工厂模式通过`NavFactory`根据用户角色动态创建不同的导航栏组件;单例模式则通过全局事件总线`eventBus`实现跨组件通信;策略模式用于处理不同的表单验证规则。这些设计模式的应用不仅提高了代码的复用性和灵活性,还增强了Vue应用的整体质量。
290 1