设计模式4

121 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第6天,点击查看活动详情

代理模式

  • 由于一个对象不能直接饮用另一个对象,所以需要通过代理对象在这两个对象之间起到中介作用
  • 代理模式就是为目标对象创造一个代理对象,已实现对目标对象的访问
  • 这样就可以在代理对象里增加一些逻辑判断、调用前或调用后执行一些操作,从而实现了扩展目标的功能
  • 火车票代购、房产中介、律师、海外代购、明星经纪人

image.png

image.png

image.png 场景

  • 事件委托代理
    • 事件捕获指的是从document到触发事件的那个节点,即自上而下的触发事件
    • 事件冒泡是自下而上的去触发事件
    • 绑定事件方法的第三个参数,就是控制事件触发顺序是否为事件捕获。true为事件捕获,false为事件冒泡,默认click image.png
  • 虚拟代理(图片预加载)
    bg-images
  • 虚拟代理(图片懒加载)
    • 当前可视区域的高度 window.innerHeight||document.documentElement.clientHeight
    • 元素距离可视区域顶部的高度 GETBoundingClientRect().top
    • getBoundingClientRect
    • DOMRect对象包含了一组用于描述边框的只读属性-left、top、right和bottom,单位为像素,除了width和height外的属性都是相对于视口的左上角位置而言
  • 缓存代理
    • 有些时候可以用空间换时间
    • 一个正整数的阶乘是所有小于及等于该数的正整数的积,而且0的阶乘为1

image.png

image.png

  • 防抖代理 节流防抖
    • 通过防抖代理优化可以把多次请求合并为一次,提高性能
    • 节流与防抖都是为了减少频繁触发事件回调
    • 节流是某段时间内不管触发了多少次回调都只认第一个,并在第一次结束后执行回调
    • 防抖就是某段时间不管出发了多少回调都只看最后一个
  • 代理跨域
    • 正向代理的对象是客户端,服务器端看不到真正的客户端,通过公司代理服务器上网
    • 方向代理的对象的服务端,客户端看不到真正的服务端,nginx代理应用服务器