当前位置: 首页 > news >正文

javaScript---设计模式-封装与对象

目录

1、封装对象时的设计模式

2、基本结构与应用示例

2.1 工厂模式

2.2 建造者模式

2.3 单例模式


封装的目的:①定义变量不会污染外部;②能作为一个模块调用;③遵循开闭原则。

好的封装(不可见、留接口):①变量外部不可见;②调用接口使用;③留出扩展接口。

1、封装对象时的设计模式

模式

目的

应用场景

应用示例

创建一个对象的模式

工厂模式

方便大量创建对象

当某一个对象需要经常创建的时候

多彩的弹窗;页码;jQuery

建造者模式

需要组合出一个全局对象

当要创建单个、庞大的组合对象时

复杂的轮播图;编辑器插件;vue的初始化

保障对象只有一个

单例模式

需要确保全局只有一个对象

为了避免重复新建,避免多个对象存在互相干扰

全局数据储存对象;vue-router

2、基本结构与应用示例

2.1 工厂模式

基本结构:写一个方法,只需要调用这个方法,就能拿到想要的对象

工厂模式示例:

(1)多彩的弹窗:弹窗有多种,它们之间存在内容和颜色上的差异。

  1. jquery需要操作dom,每一个dom都是一个jq对象

2.2 建造者模式

基本结构:把一个复杂的类各个部分,拆分成独立的类,然后再在最终类里组合到一块。

建造者模式的示例:

  1. 编辑器插件,初始化时需要配置大量参数,而且内部功能很多。

把不同的模块拆分为不同的类,给类定义不同的方法;最后把不同的类组合在最终的使用类里。

  1. Vue的初始化:vue内部众多模块,而且过程复杂

2.3 单例模式

基本结构:通过定义一个方法,使用时只允许通过此方法拿到存在内部的同一实例化对象。

单例模式的示例:

  1. 写一个数据储存对象,全局储存者只能有一个,不然会需要进行同步,增加复杂度
  2. Vue-router需要保障全局有且只有一个,否则会错乱。

相关文章:

javaScript---设计模式-封装与对象

目录 1、封装对象时的设计模式 2、基本结构与应用示例 2.1 工厂模式 2.2 建造者模式 2.3 单例模式 封装的目的:①定义变量不会污染外部;②能作为一个模块调用;③遵循开闭原则。 好的封装(不可见、留接口):①…...

【消息中间件】kafka高性能设计之内存池

文章目录 前言实现创建内存池分配内存释放内存 总结 前言 Kafka的内存池是一个用于管理内存分配的缓存区域。它通过在内存上保留一块固定大小的内存池,用于分配消息缓存、批处理缓存等对象,以减少频繁调用内存分配函数的开销。 Kafka内存池的实现利用了…...

创建型模式——单例(singleton)

1. 模式说明 单例模式保证类只有一个实例;创建一个对象,当你创建第二个对象的时候,此时你获取到的是已经创建过的对象,而不是一个新的对象; 1.1 使用场景 共享资源的访问权限;任务的管理类;数…...

算法:迷宫问题

描述 定义一个二维数组 N*M ,如 5 5 数组下所示: int maze[5][5] { 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, }; 它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或…...

聊聊并发编程的12种业务场景

前言 并发编程是一项非常重要的技术,无论在面试,还是工作中出现的频率非常高。 并发编程说白了就是多线程编程,但多线程一定比单线程效率更高? 答:不一定,要看具体业务场景。 毕竟如果使用了多线程&…...

MySQL执行顺序

MySQL执行顺序 MySQL语句的执行顺序也是在面试过程中经常问到的问题,并且熟悉执行顺序也有助于SQL语句的编写。 SELECT FROM JOIN ON WHERE GROUP BY HAVING ORDER BY LIMIT执行顺序如下: FROM ON JOIN WHERE GROUP BY # (开始使用别名) SUM # SUM等…...

引领真无线耳机未来趋势,NANK南卡OE骨传导真无线耳机惊艳亮相

传统的蓝牙耳机存在很多问题,例如续航时间短、长期佩戴耳朵会不舒服,甚至影响听力等等。为了解决这些问题,在骨传导领域深耕十多年的南卡品牌推出了这款真无线骨传导耳机——NANK南卡 OE。 NANK南卡OE即将正式上线,这一消息一经宣…...

5款写作神器,帮助你写出5w+爆款文案,好用到哭

我不允许还有文案小白、新手博主不知道这5款写作利器! 每次一写文案就头秃的新媒体工作者,赶紧看过来吧!这5款好用到爆的写作神器,喝一杯咖啡的时间就能完成写作。 我和同事都是用它们,出了很多的爆款,现…...

相交链表问题

给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注意,函数返回结果后&…...

[ubuntu] ax200网卡虚接,导致系统根目录占满而无法进入系统的奇葩问题

20230508,我像往常一样,打开电脑发现根目录满了,报警了,所以按照网上的教程,清理了一下根目录的文件,没想到背后是网卡问题… 文章目录 1.进入终端模式2.查看占用情况3.清理系统log文件3.1 清理/var/log/syslog3.2 清…...

本地字体库的引入方法

本地字体库是指在计算机系统中存储的一组字体文件,通常包含多种字体格式,如TTF、OTF、WOFF等。引入本地字体库可以让用户在使用计算机时可以选择不同的字体,从而提高用户的使用体验。 本地字体库的引入方式有多种,其中比较常用的是…...

7种优秀的导航菜单设计总结

导航是应用程序界面中最常见的模块之一,在链接应用程序中起着每个页面的作用。 不同的设计需求和业务目标决定了导航的设计因品而异,移动设备的尺寸远小于计算机。因此,在设计移动终端导航时,应考虑更全面,以确保简单…...

Problem E. 矩阵游戏 (2023年ccpc河南省赛)

原题链接: https://codeforces.com/gym/104354 题意: 有一个n*m的矩阵,只有三种字符:0,1和?。从[1,1]走到[n,m],每次只能向下走或者向下走。当走到1的时候得一分,走到0的时候不得分,走到?的时候可以将他…...

数字孪生模型构建理论及应用

源自:计算机集成制造系统 作者:陶飞 张贺 戚庆林 徐 俊 孙铮 胡天亮 刘晓军 刘庭煜 关俊涛 陈畅宇 孟凡伟 张辰源 李志远 魏永利 朱铭浩 肖斌 摘 要 数字孪生作为实现数字化转型和促进智能化升级的重要使能途径,一直备受各…...

Vue面试题:30道含答案和代码示例的练习题

Vue中的双向数据绑定是怎么实现的? 双向数据绑定通过使用v-model指令实现。v-model指令会在表单元素上创建一个监听器,在用户输入时实时更新Vue实例的数据,并且在Vue实例数据变化时更新表单元素的值。 如何在Vue中定义一个方法?…...

2023-05-09 LeetCode每日一题(有效时间的数目)

2023-05-09每日一题 一、题目编号 2437. 有效时间的数目二、题目链接 点击跳转到题目位置 三、题目描述 给你一个长度为 5 的字符串 time ,表示一个电子时钟当前的时间,格式为 “hh:mm” 。最早 可能的时间是 “00:00” ,最晚 可能的时间…...

第三节课 Linux文件权限

目录 文件属性详解 权限修改 文件所有者与属组修改 文件默认权限修改 Linux是多人多任务的操作系统,因此可能常常会有多人使用一台机器, 为了考虑每个人的隐私、方便用户合作,每个文件都有三类用户,权限是基于这三类用户设定的…...

开发STC89C51系列单片机需要的单片机技术

端口操作:控制单片机的输入输出端口,与外界进行通信。中断优先级:当多个中断同时发生时,确定哪个中断优先级更高,优先响应。时钟模块:控制单片机的时钟,可以精确计时。PWM技术:实现模…...

分布式键值存储是什么?(分布式键值存储大值)

文章目录 什么是分布式键值存储?分布式键值存储“大值”指什么? 什么是分布式键值存储? 分布式键值存储是一种分布式数据存储系统,它将数据存储为键值对的形式,并将这些键值对分散在多个节点上。每个节点都可以独立地…...

多线程(线程同步和互斥+线程安全+条件变量)

线程互斥 线程互斥: 任何时刻,保证只有一个执行流进入临界区访问临界资源,通常对临界资源起到保护作用 相关概念 临界资源: 一次仅允许一个进程使用的共享资源临界区: 每个线程内部,访问临界资源的代码&am…...

轻量级UI组件库设计:从Web Components到现代前端工程实践

1. 项目概述:一个面向现代Web开发的轻量级UI组件库最近在整理自己的前端工具箱时,又翻到了anuki这个项目。它不是一个新潮的框架,也不是一个庞大的设计系统,而是一个由个人开发者cylonmolting-creator维护的、面向现代Web开发的轻…...

你的电动车换挡逻辑够‘聪明’吗?聊聊AMT控制器(TCU)里的那些‘小心思’

你的电动车换挡逻辑够‘聪明’吗?聊聊AMT控制器(TCU)里的那些‘小心思’ 电动车AMT(自动机械变速器)控制器的核心在于TCU(Transmission Control Unit)的软件策略。与燃油车不同,电动…...

提升英文打字速度的终极方案:Qwerty Learner 免费安装与使用指南

提升英文打字速度的终极方案:Qwerty Learner 免费安装与使用指南 【免费下载链接】qwerty-learner 为键盘工作者设计的单词记忆与英语肌肉记忆锻炼软件 / Words learning and English muscle memory training software designed for keyboard workers 项目地址: h…...

ThinkPad风扇控制终极指南:TPFanCtrl2让你的笔记本静音又高效

ThinkPad风扇控制终极指南:TPFanCtrl2让你的笔记本静音又高效 【免费下载链接】TPFanCtrl2 ThinkPad Fan Control 2 (Dual Fan) for Windows 10 and 11 项目地址: https://gitcode.com/gh_mirrors/tp/TPFanCtrl2 ThinkPad用户们,你是否厌倦了笔记…...

手把手教你用VMware Workstation Pro部署FortiWeb 6.3.4虚拟机(附网络配置避坑指南)

零基础实战:VMware Workstation Pro部署FortiWeb 6.3.4全流程解析 在网络安全领域,Web应用防火墙(WAF)已成为保护线上业务不可或缺的防线。FortiWeb作为业界知名的WAF解决方案,其虚拟机版本为学习者提供了低成本体验企…...

3个突破性技巧:用WPS-Zotero重塑你的学术写作体验

3个突破性技巧:用WPS-Zotero重塑你的学术写作体验 【免费下载链接】WPS-Zotero An add-on for WPS Writer to integrate with Zotero. 项目地址: https://gitcode.com/gh_mirrors/wp/WPS-Zotero 你是否曾在深夜赶论文时,因为文献引用格式而焦头烂…...

DLSS Swapper完全指南:3步掌握游戏性能优化神器

DLSS Swapper完全指南:3步掌握游戏性能优化神器 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper DLSS Swapper是一款专业的游戏性能优化工具,专门用于管理NVIDIA DLSS、AMD FSR和Intel XeSS动态链…...

当‘感觉’驱动开发,安全与可控谁来兜底?—— Vibe Coding 时代的生存法则

当‘感觉’驱动开发,安全与可控谁来兜底?—— Vibe Coding 时代的生存法则 2025 年初,Andrej Karpathy 用一条推文引爆了开发者社区:“有一种全新的编程方式,我称之为‘vibe coding’。你完全顺应感觉,拥抱…...

一文搞懂:JVM垃圾回收(GC)算法与调优实战——从分代回收到G1、ZGC

写在前面 我们很多Java程序员都有这样的经历:工作三五年,写业务代码驾轻就熟,各种框架用得飞起,但突然有一天,线上系统OOM了,看不懂日志、不知如何排查、重启解决一切,事后却根本不知道为什么。…...

跟着 MDN 学 HTML day_30:(AbortController 实现可取消的异步请求)

在现代 Web 开发中,异步操作随处可见,尤其是网络请求。但有时候我们需要主动取消一个正在进行的请求,比如用户切换了页面、重复提交表单、或者文件下载被中断。传统的做法往往难以优雅地处理这些场景。AbortController 的出现,为我…...