TypeScript 设计模式之【单例模式】

news2024/10/2 3:30:19

文章目录

  • **单例模式**: 独一无二的特工
    • 我们为什么需要这样的特工?
    • 单例模式的秘密:如何培养这样的特工?
    • 特工的利与害
    • 代码实现
    • 单例模式的主要优点
    • 单例模式的主要缺点
    • 单例模式的适用场景
    • 总结

在这里插入图片描述

单例模式: 独一无二的特工

单例模式就像是一个秘密组织里的特殊特工。这个特工非常独特,整个组织里只有他一个人,而且随时待命,随叫随到。

我们为什么需要这样的特工?

因为它独一无二: 就像詹姆斯·邦德,007只有一个。我们组织不需要多个一模一样的特工,那样会造成混乱。而且它时时刻刻待命,所有人都知道去哪里找这个特工。不用满世界找,一个电话就能联系上。

单例模式的秘密:如何培养这样的特工?

特工的培训是绝密的(私有构造函数),没人知道他是怎么被训练出来的。而且他特殊联络人,组织安排了一个特殊的联络人(静态方法)。只有通过这个联络人,你才能接触到这个特工。

特工的利与害

第一,方便,所有人都知道去哪里找这个特工,不用满世界找,一个电话就能联系上;其次,唯一,组织里只有一个这样的特工。不用担心重复;最后,可靠,特工总是待命状态(静态变量),不用每次都重新培训。

代码实现

class SecretAgent {
    // 特工
    private static instance: SecretAgent;
    // 特工的联络人
    private constructor() {
        // 私有构造函数,防止外部实例化
        console.log("特工被创建了");
    }
	// 获取特工
    public static getInstance(): SecretAgent {
        if (!SecretAgent.instance) {
            SecretAgent.instance = new SecretAgent();
        }
        return SecretAgent.instance;
    }
	// 特工执行任务
    public doMission(): void {
        console.log("执行任务");
    }       
}

// 联系特工
const job1 = SecretAgent.getInstance();
// 执行任务
job1.doMission(); // 输出  "特工被创建了"  "执行任务"

// 再次联系特工
const job2 = SecretAgent.getInstance();
// 执行任务
job2.doMission(); // 输出 执行任务

在这里插入图片描述

单例模式的主要优点

  1. 节省资源,单例模式通过共享一个实例,避免了每次创建对象时都进行初始化,从而节省了资源,提高性能
  2. 隐藏具体实现,单例模式将对象的创建过程隐藏在内部,从而提高了代码的可维护性和可读性。

单例模式的主要缺点

单例模式将对象的创建过程隐藏在内部,难以扩展与难以调试

单例模式的适用场景

需要隐藏内部实现,共享一个实例,并且需要节省资源,提高性能。

总结

单例模式是一种创建型设计模式,它在确保一个类只有一个实例,隐藏了内部实现,并提供一个全局访问点,从而节省资源,提高性能。

喜欢的话就点个赞 ❤️,关注一下吧,有问题也欢迎讨论指教。感谢大家!!!

下期预告:TypeScript 设计模式之【原型模式】

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

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

相关文章

Java介绍及JDK 21详细安装教程

文章目录 1. 文章简介2. Java和JDK的介绍与关系2.1 Java2.2 JDK 3. Java版本的发展历程4. Java 21安装步骤 1. 文章简介 本文介绍如何Java、JDK、Java的发展及如何快速安装JDK 21。内容详细充实,旨在帮助您快速了解并使用Java。 2. Java和JDK的介绍与关系 2.1 Jav…

828华为云征文|华为云Flexus云服务器X实例——部署EduSoho网校系统、二次开发对接华为云视频点播实现CDN加速播放

EduSoho 是一款功能强大的网校系统,能够帮助教育机构快速搭建在线学习平台。本文将详细介绍如何在华为云服务器上安装和部署 EduSoho 网校系统,以及二次开发对接华为云视频点播VOD来实现CDN加速播放。 edusoho本地存储的视频播放存在诸多弊端。一方面&a…

「C++系列」命名空间

【人工智能教程】,前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。 点击跳转到网站:【人工智能教程】 文章目录 一、命名空间1. 定义命名空间2. 使用命名空间中的成员3. 命名空间的…

SAP 利润分配-未分配利润的年初余额和年末余额不一致的问题

SAP OB53 本年利润科目的年初余额和年末余额不一致的问题 关于OB53科目的问题 OB53维护的本年利润科目 现象:为何去年年末的本年利润金额和今年年初的本年利润金额不一致。 解释原因: 本年利润科目的这种现象归根结底是“表结法”产生的,换…

QT----Creater14.0,qt5.15无法启动调试,Launching GDB Debugger报红

问题描述 使用QT Creater 14.0 和qt5.15,无法启动调试也没有报错,加载debugger报红 相关文件都有 解决方案 尝试重装QT,更换版本5.15.2,下载到文件夹,shift鼠标右键打开powershell输入 .\qt-online-installer-windows-x64-4.8.0.exe --mirror http://mirrors.ustc.edu.cn…

VMware 虚拟机配置固定 IP

1. VMware 配置 参考:https://blog.csdn.net/jsryin/article/details/123304582 参考:https://zhuanlan.zhihu.com/p/455097916 1.1. 点击编辑 -> 虚拟网络编辑器 1.2. Net 设置 选择VMnet8 进行配置 查看当前虚拟机的网关是192.168.17.2&#x…

HAproxy-7层负载均衡集群根据不同服务请求分配服务器

搭建HAproxy----7层负载均衡集群的补充 https://blog.csdn.net/qq_73990369/article/details/142500451?spm1001.2014.3001.5501 一、再准备两台虚拟机进行测试 192.168.229.15/24 ----php1 192.168.229.16/24 ----php2 1、PHP1 & php2(192.168.229.15/24 ,192…

做网站建设公司为客户着想方面

作为一家专业的网站建设公司,我们始终将客户的需求置于首位,致力于为客户打造独具特色、功能强大的网站,助力他们在激烈的市场竞争中脱颖而出。 专业团队,定制化服务 我们的团队由技术精湛、经验丰富的专业人才组成,能…

【笔记】光的衍射

一、 衍射现象 波遇到障碍物时,绕过障碍物 进入几何阴影区。 光偏离直线传播路径进入几何 阴影区,并形成光强非均匀稳 定分布。 二、菲涅耳原理 1、 惠更斯原理 波面上的每一点均为发 射子波的波源,这些子波的 包络面即新的波阵面 成功…

C++ 二叉树

1. 二叉搜索树 1.1 二叉搜索树概念 二叉搜索树又称二叉排序树,他或者是一棵空树,或者是具有以下性质的二叉树: ①若它的左子树不为空,则左子树上所有节点的值都小于根节点的值 ②若它的右子树不为空,则右子树上所有节…

VIVADO IP核之FIR抽取器多相滤波仿真

VIVADO IP核之FIR抽取器多相滤波仿真(含有与MATLAB仿真数据的对比) 目录 前言 一、滤波器系数生成 二、用MATLAB生成仿真数据 三、VIVADO FIR抽取多相滤波器使用 四、VIVADO FIR抽取多相滤波器仿真 五、VIVADO工程下载 总结 前言 关于FIR低通滤波…

MySQL数据库修改authentication_string字段为显示密码后无法登录

MySQL数据库修改authentication_string字段为显示密码后无法登录 1. 本文创作背景2. 问题3. 原因分析4. 解决方案5. 附录 1. 本文创作背景 本文介绍MySQL数据库修改authentication_string字段为显示密码后无法登录的处理办法。 2. 问题 用户通过navicat修改MySQL的user表roo…

逆概率加权(R和Python案例)

逆概率加权(Inverse Probability Weighting, IPW)是一种统计技术,用于观察性研究中调整混杂变量的影响,以便更准确地估计因果关系。这种方法特别有用于在无法进行随机化实验的情况下,通过给予不同个体不同的权重&#…

[数据库实验七]事务设计

目录 一、实验目的与要求 二、实验内容 三、实验小结 实验中涉及的数据参考:[数据库实验一]数据库和表-CSDN博客 一、实验目的与要求 1.熟悉提交事务 2.回滚事务 3.检查点技术 注:可以用可视化软件来实现 二、实验内容 基于现有数据库设计事务提…

Axure-本地发布,局域网内用户访问

目录 前言内容一. 选择Axure发布路径,进行相应配置二.添加IIS服务配置(不在这里赘述!)三:添加IIS配置,创建网站四.添加安全策略:实践: 前言 最近加入了公司的积分系统,由…

时尚与科技的融合,戴上更轻更悦耳的QCY C30耳夹耳机,随时享受好音乐

不知不觉,蓝牙耳机已经成了我日常必备的小工具了,尤其是这两年新出现的耳夹式耳机,轻松解决了入耳式耳机的舒适性难题,戴上一整天也不会觉得累,而且一款好看的耳机不仅能够提供澎湃的音质,还能成为时尚出街…

理解信息安全中的SOAR

在信息安全领域,SOAR(Security Orchestration, Automation, and Response,安全编排、自动化与响应)是一个现代化的解决方案,旨在通过集成和自动化的方式优化安全操作流程,提升威胁检测、事件响应的速度与效…

雷达原理-绪论-西电魏青

Radar 雷达:radio detection and ranging 无线电探测和测距 无线电:电磁波信号 探测:通过电磁波信号的一个回波特性实现物体探测 测距:利用回波信号(现在技术发展,不单单是测距,还能是物体的各种…

stm32 flash无法擦除

通过bushound调试代码发现,当上位机发送命令到模组后flash将不能擦除,通过 HAL_FLASH_GetError()函数查找原因是FLASH Programming Sequence error(编程顺序错误),解决办法是在解锁后清零标志位…

构建高效房屋租赁系统:Spring Boot应用

1 绪论 1.1 研究背景 中国的科技的不断进步,计算机发展也慢慢的越来越成熟,人们对计算机也是越来越更加的依赖,科研、教育慢慢用于计算机进行管理。从第一台计算机的产生,到现在计算机已经发展到我们无法想象。给我们的生活改变很…