javascript设计模式 门面模式

2024-03-07 06:38

本文主要是介绍javascript设计模式 门面模式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

javascript设计模式 门面模式

什么是门面模式
将一个复杂的功能简化一个简单的函数调用,简单的来说,我使用榨汁机榨苹果,我只要将苹果放进去榨汁机就可以了,不需要了解榨汁机的内部设计.这一模式提供了面向一种更大型的代码体提供了一个的更高级别的舒适的接口,隐藏了其真正的潜在复杂性,方便的开发者的调用.例如jquery的$("").val()的实现就是一个门面模式
门面模式的作用
1.简化接口的调用
2.消除类与使用它的客户代码之间的耦合 (解耦)
简单的门面模式

在实现html元素跨浏览器事件监听的实现,我们在使用这个函数时无需考虑这个浏览器是chrome还是IE,都可以完成对dom的监听.

   var addEvent = function (ele, type, fn) {if (window.addEventListener) {ele.addEventListener(type, fn, false);  //实现webkit内核,Gecko内核事件监听}else if (window.attachEvent) {ele.attachEvent("on" + type, fn);  //实现IE事件监听}else {ele["on" + type] = fn;  //不知名浏览器实现事件监听}}

PS:webkit内核和IE内核实现时间监听的接口不一致
在这个实例中,我们直接可以通过变量名Singleton来访问单体

更复杂的门面模式

门面模式可以通过对一系列函数进行组合,来达到简化API的复杂性

下面举一个例子(在一个单体中实现阻止冒泡过程,和阻止默认事件)

    var DED = {/*** 阻止冒泡事件*/stopBubble: function (ev) {if (ev.stopPropagation) {ev.stopPropagation();  //w3c interface}else {ev.cancelable = true;  //IE interface}},/*** 阻止默认事件*/stopDefault: function (ev) {if (ev.preventDefault) {ev.preventDefault(); //w3c interface}else {ev.returnValue = false;  //IE interface}},/***  通过一个组合将这两个事件,放在一个接口中*/stopEvent: function (ev) {DED.stopBubble(ev);DED.stopDefault(ev);}};
门面模式的使用场合
1.用于反复成组出现的代码
2.创建的自己的工具库,在使用时无需考虑到浏览器的变化,如上例的addEvent()
门面模式的好处
1.编写一次的组合代码,可以反复的使用它
2.降低了对外部代码的依赖性,为应用系统的开发增加了灵活性
3.减少了模块之间的耦合,方便对整个系统进行修改
门面模式的弊端
1.一个可以庞大的门面模式,在使用的时候,可能会常常执行一些我们不需要的任务

这篇关于javascript设计模式 门面模式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/782656

相关文章

SpringBoot条件注解核心作用与使用场景详解

《SpringBoot条件注解核心作用与使用场景详解》SpringBoot的条件注解为开发者提供了强大的动态配置能力,理解其原理和适用场景是构建灵活、可扩展应用的关键,本文将系统梳理所有常用的条件注... 目录引言一、条件注解的核心机制二、SpringBoot内置条件注解详解1、@ConditionalOn

通过Spring层面进行事务回滚的实现

《通过Spring层面进行事务回滚的实现》本文主要介绍了通过Spring层面进行事务回滚的实现,包括声明式事务和编程式事务,具有一定的参考价值,感兴趣的可以了解一下... 目录声明式事务回滚:1. 基础注解配置2. 指定回滚异常类型3. ​不回滚特殊场景编程式事务回滚:1. ​使用 TransactionT

Spring LDAP目录服务的使用示例

《SpringLDAP目录服务的使用示例》本文主要介绍了SpringLDAP目录服务的使用示例... 目录引言一、Spring LDAP基础二、LdapTemplate详解三、LDAP对象映射四、基本LDAP操作4.1 查询操作4.2 添加操作4.3 修改操作4.4 删除操作五、认证与授权六、高级特性与最佳

Spring Shell 命令行实现交互式Shell应用开发

《SpringShell命令行实现交互式Shell应用开发》本文主要介绍了SpringShell命令行实现交互式Shell应用开发,能够帮助开发者快速构建功能丰富的命令行应用程序,具有一定的参考价... 目录引言一、Spring Shell概述二、创建命令类三、命令参数处理四、命令分组与帮助系统五、自定义S

SpringSecurity JWT基于令牌的无状态认证实现

《SpringSecurityJWT基于令牌的无状态认证实现》SpringSecurity中实现基于JWT的无状态认证是一种常见的做法,本文就来介绍一下SpringSecurityJWT基于令牌的无... 目录引言一、JWT基本原理与结构二、Spring Security JWT依赖配置三、JWT令牌生成与

Java中Date、LocalDate、LocalDateTime、LocalTime、时间戳之间的相互转换代码

《Java中Date、LocalDate、LocalDateTime、LocalTime、时间戳之间的相互转换代码》:本文主要介绍Java中日期时间转换的多种方法,包括将Date转换为LocalD... 目录一、Date转LocalDateTime二、Date转LocalDate三、LocalDateTim

如何配置Spring Boot中的Jackson序列化

《如何配置SpringBoot中的Jackson序列化》在开发基于SpringBoot的应用程序时,Jackson是默认的JSON序列化和反序列化工具,本文将详细介绍如何在SpringBoot中配置... 目录配置Spring Boot中的Jackson序列化1. 为什么需要自定义Jackson配置?2.

Java中使用Hutool进行AES加密解密的方法举例

《Java中使用Hutool进行AES加密解密的方法举例》AES是一种对称加密,所谓对称加密就是加密与解密使用的秘钥是一个,下面:本文主要介绍Java中使用Hutool进行AES加密解密的相关资料... 目录前言一、Hutool简介与引入1.1 Hutool简介1.2 引入Hutool二、AES加密解密基础

Spring Boot项目部署命令java -jar的各种参数及作用详解

《SpringBoot项目部署命令java-jar的各种参数及作用详解》:本文主要介绍SpringBoot项目部署命令java-jar的各种参数及作用的相关资料,包括设置内存大小、垃圾回收... 目录前言一、基础命令结构二、常见的 Java 命令参数1. 设置内存大小2. 配置垃圾回收器3. 配置线程栈大小

SpringBoot实现微信小程序支付功能

《SpringBoot实现微信小程序支付功能》小程序支付功能已成为众多应用的核心需求之一,本文主要介绍了SpringBoot实现微信小程序支付功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作... 目录一、引言二、准备工作(一)微信支付商户平台配置(二)Spring Boot项目搭建(三)配置文件