首页 > 编程语言 >设计模式-javascript实现【外观模式】

设计模式-javascript实现【外观模式】

时间:2023-03-10 15:33:34浏览次数:30  
标签:外观 disk console log javascript element install const 设计模式

定义:外观模式又叫门面模式,外观模式为一个系统中的子系统提供一个统一的高层接口,从而方便使用
子系统。

1. 用类实现外观模式

class Cpu {
  install() {
    console.log('install cpu');
  }
}

class Disk {
  install() {
    console.log('install disk');
  }
}

class Memory {
  install() {
    console.log('install disk');
  }
}

class Computer {
  constructor() {
    this.cpu = new Cpu();
    this.disk = new Disk();
    this.memory = new Memory();
  }

  install () {
    this.cpu.install();
    this.disk.install();
    this.memory.install();
  }
}

const computer = new Computer();
computer.install();

2. 用函数实现外观模式

const installCpu = () => console.log('install cpu');
const installDisk = () => console.log('install disk');
const installMemory = () => console.log('install memory');
const installComputer = () => {
  installCpu();
  installMemory();
  installDisk();
};
installComputer();

3. 外观模式在js中的应用

  • 兼容各浏览器的事件处理差异为用户提供统一调用接口
function addClickEvent(element, fn) {
  // most browser support
  if(element.addEventListener){
    element.addEventListener('click', fn);
    console.log('most');
  }
  // IE8 support
  else if (element.attachEvent){
    console.log('IE8');
    element.attachEvent('onclick', fn);
  }
  // all the browser support
  else {
    console.log('all');
    element.onclick = fn;
  }
}
const el = document.querySelector('#logo');
addClickEvent(el, function(event){
  console.log('add click Event');
});

标签:外观,disk,console,log,javascript,element,install,const,设计模式
From: https://www.cnblogs.com/xiaodi-js/p/17203516.html

相关文章

  • vue (或者 javascript ) 打印彩色日志
    typeAny=any/***创建console所需的style样式*@parambgColor*@paramfontColor*/constcreateStyle=function(bgColor:string,fontColor='#fff......
  • javascript | 刷新页面的方式
    方式序号方法1history.go()2location.reload()3location=location4location.assign(location.href)5location.replace(location.href)6l......
  • js的一些设计模式概念记录
    工厂模式functioncreatePerson(name,age,job){leto=newObject();o.name=name;o.age=age;o.job=job;o.sayName=function(){console.lo......
  • [设计模式]设计模式之装饰器模式/包装模式【8】【待完善】
    1概述当你在编写代码时,需要扩展一个类的功能,或者是当前类的接口不能满足需求时,你会选择怎么做?重新编写子类,通过继承加入功能?修改原有类的接口使其符合现有环境?但你......
  • Spring设计模式——代理模式[手写实现JDK动态代理]
    代理模式代理模式(ProxyPattern):是指为其他对象提供一种代理,以控制对这个对象的访问。代理对象在客户端和目标对象之间起到中介作用,代理模式属于结构型设计模式。使用代......
  • 一Spring框架基础--2设计模式
    一Spring框架基础--2设计模式1.3spring用到的设计模式1.3.1责任链模式有多个对象,每个对象持有对下一个对象的引用,这样就会形成一条链,请求在这条链上传递,直到某一对象......
  • JavaScript 对象管家 Proxy
    JavaScript在ES6中,引入了一个新的对象类型​​Proxy​​​,它可以用来代理另一个对象,并可以在代理过程中拦截、覆盖和定制对象的操作。​​Proxy​​对象封装另一个对象......
  • JavaScript实现搜索联想关键字高亮功能
    <!DOCTYPEhtml><htmllang="en"> <head> <metacharset="UTF-8"> <metaname="viewport"content="width=device-width,initial-scale=1.0"> <metahttp-equiv=......
  • 【JavaScript】——input元素的oninput事件和onchange事件
    //第一种:直接在元素标签上添加oninput属性,属性值为处理事件函数的调用<inputtype="text"id="input"oninput="handleInput()"></input>functionhandleInput(){ ......
  • Spring设计模式——原型模式
    原型模式原型模式(PrototypePattern),是指原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象。原型模式主要适用于以下场景:类初始化消耗资源较多使用new生......