JavaScript 设计模式之外观模式

外观模式

我们为啥要使用外观模式呢,其实我们在使用各种 js 库的时候常常会看到很多的外观者模式,也正是这些库的大量使用,所以使得兼容性更广泛,通过外观者模式来封装多个功能,简化底层操作方法

javascript 复制代码
const A = {
  g: function (id) {
    return document.querySelector(`#${id}`)
  },
  css: function (id, key, value) {
    this.g(id).style[key] = value
    return this
  },
  attr: function (id, key, value) {
    this.g(id)[key] = value
    return this
  },
  html: function (id, html) {
    this.g(id).innerHTML = html
    return this
  }
}


A.css('box','background','red') // 为 id 为 box 的 盒子设置 background 样式属性为 red

数据适配

在我们写方法时,通常会传递参数的形式来传递数据

javascript 复制代码
function fun(arg1,arg2,arg3,...){
    // todo:
}

但是我们更应该这样来写

javascript 复制代码
function fun(opts = {}) {
    const {a,b,c} = opts
    // opts.xx
    // todo:
}

使用一个对象来接受一些多个参数,使用时进行结构等方式读取数据,这样就避免了多个参数导致数据传递错误问题了,其实在很多的框架中也常常看到这种,比如 Vue 中

javascript 复制代码
import { createApp, ref } from 'vue'

createApp({
  setup() {
    return {
      count: ref(0)
    }
  }
}).mount('#app')

这 createApp 方法就单单只是传递一个对象来作为一个参数,而不是一二三个参数

比如 jQuery 中

javascript 复制代码
$.ajax({
  url: 'xx',
  method: 'get',
  dataType: 'json',
  success: function (data) {
    // todo:
  }
})

这种例子也是非常的多,这样的好处就是方便后期扩展,对于后期堆加参数更有利。

相关推荐
捕鲸叉1 天前
C++软件设计模式之外观(Facade)模式
c++·设计模式·外观模式
重生之绝世牛码2 天前
Java设计模式 —— 【结构型模式】外观模式详解
java·大数据·开发语言·设计模式·设计原则·外观模式
越甲八千4 天前
重拾设计模式-外观模式和适配器模式的异同
设计模式·适配器模式·外观模式
越甲八千4 天前
重拾设计模式--外观模式
c++·设计模式·外观模式
西岭千秋雪_10 天前
设计模式の装饰者&组合&外观模式
java·python·设计模式·组合模式·装饰器模式·外观模式
去看全世界的云17 天前
【设计模式】结构型设计模式总结之代理模式、装饰模式、外观模式、享元模式
android·java·设计模式·代理模式·享元模式·外观模式
Fre丸子_19 天前
C++设计模式之外观模式
c++·设计模式·外观模式
阳光开朗_大男孩儿19 天前
外观设计模式
c++·设计模式·外观模式
机器视觉知识推荐、就业指导20 天前
C++设计模式外观模式(Facade)(家庭影院案例)
c++·设计模式·外观模式
澄澈i24 天前
设计模式学习[10]---迪米特法则+外观模式
学习·设计模式·外观模式·迪米特法则