首页 > 编程语言 >【JS】169-JavaScript设计模式——外观模式

【JS】169-JavaScript设计模式——外观模式

时间:2022-10-13 15:35:32浏览次数:85  
标签:外观 preventDefault JavaScript 接口 JS typeof 模式 设计模式 stopPropagation

【JS】169-JavaScript设计模式——外观模式_应用场景

六、外观模式(Facade Pattern)

1.概念介绍

外观模式(Facade Pattern) 是一种简单又常见的模式,它为一些复杂的子系统接口提供一个更高级的统一接口,方便对这些子系统的接口访问。

它不仅简化类中的接口,还对接口和调用者进行解耦,外观模式也常被认为是开发者必备,它可以将一些复杂操作封装起来,并创建一个简单接口用于调用。

2.优缺点和应用场景

2.1优点

  • 轻量级,减少系统相互依赖。
  • 提高灵活性。
  • 提高了安全性。

2.2缺点

  • 不符合开闭原则,如果要改东西很麻烦,继承重写都不合适。

2.3应用场景

  • 为复杂的模块或子系统提供外界访问的模块。
  • 子系统相对独立。
  • 预防低水平人员带来的风险。
  • 项目重构。

3.基本案例

经常我们在处理一些特殊情况的时候,需要一起调用好几个方法,我们使用外观模式,就可以将多个方法包装成一个方法,哪里需要使用直接调用这个包装好的方法就可以。
比如我们经常处理浏览器事件,需要同时调用 ​​​stopPropagation()​​​和 ​​preventDefault()​​,于是我们就可以新建一个外观方法,实现这两个方法同时调用:

1. ​​let myEvent = {​​
2. ​​ // ...​​
3. ​​ stop: e => {​​
4. ​​ e.stopPropagation();​​
5. ​​ e.preventDefault();​​
6. ​​ }​​
7. ​​};​​

然后我们也可以使用外观模式,来做IE事件的兼容性:

参考资料

1. let myEvent = {​​
2. ​​ // ...​​
3. ​​ stop: e => {​​
4. ​​ // 其他 ​​
5. ​​ if(typeof e.preventDefault === 'function'){​​
6. ​​ e.preventDefault();​​
7. ​​ }​​
8. ​​ if(typeof e.stopPropagation === 'function'){​​
9. ​​ e.stopPropagation();​​
10. ​​ }​​
11. ​​ // IE​​
12. ​​ if(typeof e.returnValue === 'boolean'){​​
13. ​​ e.returnValue = false;​​
14. ​​ }​​
15. ​​ if(typeof e.cancelBubble === 'boolean'){​​
16. ​​ e.cancelBubble = true;​​
17. ​​ }​​
18. ​​ }​​
19. ​​};​​
  1. 《JavaScript Patterns》

【JS】169-JavaScript设计模式——外观模式_应用场景_02

标签:外观,preventDefault,JavaScript,接口,JS,typeof,模式,设计模式,stopPropagation
From: https://blog.51cto.com/u_11887782/5753518

相关文章

  • 【JS】168-JavaScript设计模式——策略模式
    五、策略模式(StrategyPattern)1.概念介绍策略模式(StrategyPattern):封装一系列算法,支持我们在运行时,使用相同接口,选择不同算法。它的目的是为了将算法的使用与算法的实现......
  • 【JS】166-JavaScript设计模式——迭代器模式
    三、迭代器模式(IteratorPattern)1.概念介绍迭代器模式(IteratorPattern) 是提供一种方法,顺序访问一个聚合对象中每个元素,并且不暴露该对象内部。这种模式属于行为型模式......
  • 【JS】172-JavaScript设计模式——观察者模式
    九、观察者模式(ObserverPatterns)1.概念介绍观察者模式(ObserverPatterns) 也称订阅/发布(subscriber/publisher)模式,这种模式下,一个对象订阅定一个对象的特定活动,并在状......
  • 【JS】170-JavaScript设计模式——代理模式
    七、代理模式(ProxyPattern)1.概念介绍代理模式(ProxyPattern) 为其他对象提供一种代理,来控制这个对象的访问,代理是在客户端和真实对象之间的介质。简单的理解:如我们需要......
  • videojs播放直播
    index.html引入css和js<linkhref="https://cdn.bootcdn.net/ajax/libs/video.js/7.10.1/alt/video-js-cdn.min.css"rel="stylesheet"><scripttype="text/javascrip......
  • 【JS】222-JS 函数的 6 个基本术语
    英文:Martin Novák 译文:reahinkhttps://zhuanlan.zhihu.com/p/61868946让我们谈谈什么是:lambdas(匿名函数)、first-classfunctions(头等函数)、higher-orderfunctions(高阶......
  • 45. JS Ajax请求(简明教程)
    1.前言Ajax全称“AsynchronousJavaScriptandXML”,译为“异步JavaScript和XML”,程序员们习惯称之为“阿贾克斯”,它并不是一种技术,而是多种技术的综合体,其中包括Ja......
  • 46. JS类型转换(强制类型转换+隐式类型转换)
    1.前言JavaScript 中有五种基本数据类型(其中包括String、Number、Boolean、Function、Symbol)、三种对象类型(其中包括Object、Date、Array)和两种特殊类型(其中包括Nul......
  • 【JS】80-如何优雅处理前端异常?
    前端一直是距离用户最近的一层,随着产品的日益完善,我们会更加注重用户体验,而前端异常却如鲠在喉,甚是烦人。一、为什么要处理异常?异常是不可控的,会影响最终的呈现结果,但是我们......
  • 【JS】89-用JavaScript实现的5个常见函数
    前言    在学习 JavaScript,或者前端面试中,有人会问你节流函数、防抖函数、递归函数等,本文分享了5个常见函数,希望对你有所帮助。    在 JavaScript 中有一些问题......