javaScript---设计模式-提高复用性

news2025/1/15 19:45:35

目录

1、提高复用性的设计模式

2、基本结构与应用示例

2.1 享元模式

2.2 桥接模式

2.3 模板方法模式

2.4 JS的组合与继承


提高复用性的目的:①遵循DRY(Don't Repeat Yourself)原则;②减少代码量,节省开销

什么是好的复用:①对象可以再重复使用,不用修改;②重复代码少;③模块功能单一。

1、提高复用性的设计模式

模式

目的

应用场景

应用示例

减少代码数量,高效复用代码

桥接模式

通过桥接代替耦合

减少模块之间的耦合。通过独立方法间的桥接来形成整体功能,这样每个方法都可以被高度复用

创建不同的选项效果;express中创建get等方法

享元模式

减少对象/代码数量

当代码中创建了大量类似对象和类似的代码块。提取出公有部分与私有部分,私有部分作为外部数据传入,从而减少对象数量

文件上传;

jQuery的extend方法

创建高可复用性的代码

模板方式模式

定义一系列的骨架,简化后面类似操作的内容

当项目中出现很多类似操作内容。当一个功能朝着多样化发展,不妨先定义一个基础的,把具体实现延迟到后面。

一系列弹窗,每个弹窗的行为,大小,文字都不同;

封装一个算法计算器

2、基本结构与应用示例

2.1 享元模式

基本结构:只需要一个类,这个类保留共有的部分,私有(不同)部分提取出来作为公共的享元。

应用示例:

(1)文件上传:可上传多个文件

私有部分提取出来作为公共的享元

(2)jQuery的extend方法,需要判断参数数量来进行不同的操作。

有效减少重复的for循环代码

2.2 桥接模式

基本结构:

注意区别:建造者模式关注如何构建对象,关注创建;桥接模式关注如何通过桥接方式提高代码可复用性,关注功能

应用示例:(1)创建不同的选项效果,有一组菜单,上面每种选项都有不同的选中效果。

(2)express中创建get等方法:express中有get,post,put等七八个方法,如何方便快速地创建。

2.3 模板方法模式

基本结构:定义后面需要扩展多维度会用到的基本行为,在基本行为的基础上做扩展(继承或者组合的方式)。

应用示例:

  1. 编写一个弹窗组件,一系列弹窗,每个弹窗的行为,大小,文字都不同。

通过继承的方式再父类基础上做扩展

  1. 封装一个算法计算器:我们有一系列自己的算法,但是这个算法常在不同的地方需要增加一些不同的操作。

通过组合方式,把我们要扩展的东西变成方法组合在一起达成扩展。

2.4 JS的组合与继承

组合:

(1)JavaScript最初没有专门的继承,所以最初JavaScript推崇函数式的编程,然后进行统一组合桥接到一起。

(2)桥接模式可以看出组合的一种体现,组合的好处是耦合低,方便方法复用,方便扩展。

组合缺点:没有继承那样的能自动获得父类的内容与接口

继承:

(1)在es6出现class和extend,继承的方式多种多样,但是都是各有弊端。

(2)模板方法模式可以看出继承的一种体现,继承的好处是可以自动获得父类的内容与接口,方便统一化

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/501474.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android安装apk出现 “安装包无效”或“安装包不兼容”的解决方案

Android 安装apk出现“安装包无效”或“安装包不兼容”解决方案 1. 问题出现2. 配置 build.gradle3. 生成Signed APK 1. 问题出现 使用Android Studio安装apk到手机一切正常,但是分享出去出现安装apk出现“安装包无效”或“安装包不兼容”问题 这种情况需要我们设…

MySQL之从一条记录说起 【InnoDB 记录结构下篇】

前言 本文章收录在MySQL性能优化原理实战专栏,点击此处查看更多优质内容。 本文摘录自 ▪ 小孩子4919《MySQL是怎样运行的:从根儿上理解MySQL》 上一篇文章讲了InnoDB有Compact、Redundant、Dynamic、Compressed4种⾏格式,其中主要讲了Com…

Java——按之字形顺序打印二叉树

题目链接 牛客在线oj题——按之字形顺序打印二叉树 题目描述 给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替) 数据范围:0≤n≤1500, 树上每个…

深入浅出字符编码

本文对应视频链接: 深入浅出字符编码 什么是编码格式 从一个小问题引入 我们在学习C语言的时候,有一道必做的题目是将大写字母转换成小写,相信有点基础的同学都能不加思索的写出下面的代码: char toLower(char upper){if (up…

大数据Doris(十四):数据模型的选择建议和列定义建议

文章目录 数据模型的选择建议和列定义建议 一、数据模型的选择建议 1、Aggregate数据模型选择<

如何快速给出解释——正交矩阵子矩阵的特征值的模必然不大于1

Memory 首先快速回忆一下正交矩阵的定义&#xff1a; A为n阶实矩阵&#xff0c;且满足A‘AE或是说AA’E&#xff0c;那么A为正交矩阵。 &#xff08;啊&#xff0c;多么简洁的定义&#xff09; 其次快速想到它的性质&#xff1a; ① 实特征值必然 或 其他复数…

qt几种常见安装包制作工具-Qt Installer Framework

Qt Installer Framework&#xff08;简称&#xff1a;QtIFW&#xff09;概述 QtIFW提供了一组工具和实用程序&#xff0c;可以一次性创建安装程序&#xff0c;并在所有支持的桌面Qt平台上部署它们&#xff0c;而无需重写源代码。安装程序将在运行它们的平台上具有本机外观和感…

第四节 特殊权限SUID、SGID、SBIT

1.Set UID 简称 SUID 简称 SUID 限制与功能&#xff1a; SUID权限仅对二进制程序有效&#xff1b; 执行者对于该程序需要具有x的执行权限&#xff1b; 本权限仅在执行该程序的过程中有效&#xff1b;  执行者将具有该程序拥有者的权限 特殊权限SUID、SGID、SBIT 例&am…

【分布族谱】Zipf分布及其Python可视化

文章目录 zipf分布简介zipfian和zipf对象zipf分布到zeta分布的变化情况分布族谱图 zipf分布简介 #mermaid-svg-mG901pJXpTYFT7Bk {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-mG901pJXpTYFT7Bk .error-icon{fill:…

Spring Boot 如果防护 XSS + SQL 注入攻击

Spring Boot 如果防护 XSS SQL 注入攻击 XSS跨站脚本攻击XSS漏洞介绍XSS漏洞分类防护建议 SQL注入攻击SQL注入漏洞介绍防护建议mybatis是如何做到sql预编译的呢 SpringBoot中如何防止XSS攻击和sql注入创建Xss请求过滤类XssHttpServletRequestWraper把请求过滤类XssHttpServlet…

使用fork函数创建一个进程

pid_t fork(void) fork函数调用成功&#xff0c;返回两次 &#xff08;1&#xff09;返回值为0&#xff0c;代表当前进程是子进程 &#xff08;2&#xff09;返回值为非负数&#xff0c;代表当前进程是父进程 &#xff08;3&#xff09;调用失败&#xff0c;则返回-1 代码如…

【人工智能概论】 K折交叉验证

【人工智能概论】 K折交叉验证 文章目录 【人工智能概论】 K折交叉验证一. 简单验证及其缺点1.1 简单验证简介1.2 简单验证的缺点 二. K折交叉验证2.1 K折交叉验证的思路2.2 小细节2.3 K折交叉验证的缺点2.4 K折交叉验证的代码 一. 简单验证及其缺点 1.1 简单验证简介 简单验…

join 语句使用

目录 前言 创建数据 知识点补充 Join算法Index Nested-Loop 小结&#xff1a; Join算法Block Nested-Loop join_buffer放不下驱动表情况 小结&#xff1a; 小表是什么&#xff1f; 总结&#xff1a; 参考内容 前言 在实际开发中&#xff0c;我们一般会有两类问题&a…

腾讯云2核4G服务器5M带宽轻量CPU性能、流量和系统盘测试

腾讯云轻量应用服务器2核4G5M配置&#xff0c;自带5M公网带宽&#xff0c;5M带宽下载速度峰值可达640KB/秒&#xff0c;系统盘为60GB SSD盘&#xff0c;每月500GB流量包&#xff0c;折合每天16GB流量。腾讯云百科来详细说下腾讯云轻量应用服务器2核4G5M配置、CPU型号处理器主频…

威联通nas服务器中勒索病毒被encrypted勒索病毒攻击怎么办有哪些预防措施

威联通是一家专业提供网络存储设备和应用方案的公司&#xff0c;旗下NAS服务器因为实用、多功能而深受用户喜欢&#xff0c;但是NAS服务器在使用过程中也面临许多安全问题&#xff0c;例如被encrypted勒索病毒攻击。下面将为大家介绍encrypted勒索病毒在威联通NAS服务器上的危害…

黑马---Redis入门到实战【实战篇】

一、短信登录 基于session实现短信登录的流程 实现发送短信验证码功能 发送验证码功能&#xff1a; Overridepublic Result sendCode(String phone, HttpSession session) {//1.校验手机号if(RegexUtils.isPhoneInvalid(phone)){//2.如果不符合&#xff0c;返回错误信息return…

Java 基础进阶篇(十三)—— 异常处理机制

文章目录 一、异常概述、体系二、异常的分类三、异常的默认处理流程四、异常的处理机制4.1 编译时异常的处理机制4.1.1 方式一&#xff1a;抛出异常4.1.2 方式二&#xff1a;捕获异常4.1.3 方式三&#xff1a;前两者结合 4.2 运行时异常的处理机制 五、自定义异常5.1 自定义编译…

程序员面试金典10.*

文章目录 10.1合并排序的数组10.02变位词组10.03搜索旋转数组10.05稀疏数组搜索10.09排序矩阵查找10.10 数字流的秩10.11 峰与谷 10.1合并排序的数组 这个就从后往前加入到新数组里就行。如果B的下标是-1则结束&#xff0c;A的下标是-1则一直加B的元素。 class Solution { pub…

挑战14天学完Python---初识python基本图形绘制

往期文章 目录 往期文章前言1."Python蟒蛇绘制"实例2.Python标准库 之turtle库3. 面向对象编程风格3.1 import更多玩法3.1.1使用from和import保留字共同完成3.1.2 使用import和as保留字共同完成 4.turtle的原(wan)理 (fa)4.1 turtle绘图窗体布局---turtul.setup()4.2…

京东小程序折叠屏适配探索 | 京东云技术团队

前言 随着近年来手机行业的飞速发展&#xff0c;手机从功能机进入到智能机&#xff0c;手机屏幕占比也随着技术和系统的进步越来越大&#xff0c;特别是Android 10推出以后&#xff0c;折叠屏逐渐成为Android手机发展的趋势。 图 1 Android手机屏幕发展趋势 京东小程序近年来…