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

设计模式之单例模式

文章の目录

  • 一、什么是单例模式
  • 二、如何实现单例模式
    • 1、利用JavaScript中的全局对象
    • 2、静态成员改造
  • 参考
  • 写在最后


一、什么是单例模式

单例模式也称为单体模式,保证一个类仅有一个实例,并提供一个访问它的全局访问点。

举个栗子:一个班级只有一个班主任,只有一个太阳,一个国家只有一个主席这些 “唯一”、“便于访问(全局访问)” 的行为对象便称作是单例

二、如何实现单例模式

1、利用JavaScript中的全局对象

全局对象是最简单的单例模式,利用ES6的let不允许重复声明的特性,刚好符合这两个特点

let instance;
class Person {constructor(name) {if (!instance) {instance = this;this.name = name;} else {return instance;}}
}
let zhangsan = new Person("张三");
let lisi = new Person("李四");
console.log(zhangsan === lisi);

但是我们并不建议这么实现单例,因为全局对象/全局变量会有一些弊端:

  1. 污染命名空间(容易变量名冲突)
  2. 维护时不容易管控 (搞不好就直接覆盖了)

2、静态成员改造

class Person {static instance;constructor(name) {if (!Person.instance) {Person.instance = this;this.name = name;} else {return Person.instance;}}
}
let zhangsan = new Person("张三");
let lisi = new Person("李四");
console.log(zhangsan === lisi);

参考

  1. js设计模式之单例模式

写在最后

如果你感觉文章不咋地//(ㄒoㄒ)//,就在评论处留言,作者继续改进;o_O???
如果你觉得该文章有一点点用处,可以给作者点个赞;\\*^o^*//
如果你想要和作者一起进步,可以微信扫描二维码,关注前端老L~~~///(^v^)\\\~~~
谢谢各位读者们啦(^_^)∠※!!!

http://www.lryc.cn/news/12387.html

相关文章:

  • [oeasy]python0086_ASCII_出现背景_1963年_DEC_PDP系列主机_VT系列终端
  • 基于FFmpeg实现的无声音屏幕录制
  • 【项目精选】基于JSP物流信息网(论文+源码+视频)
  • linux异步IO编程实例分析
  • 日常英语口语练习-情景交际场景25(三)
  • Qt 工程师进阶技术23种设计模式
  • Redis 强化
  • 华为OD机试题 - 众数和中位数(JavaScript)
  • Go: expected pseudo-register found R13 error
  • 程序员必备的技能-深入理解 Linux 内核拆解
  • 学习 Python 之 Pygame 开发坦克大战(三)
  • Docker 学习笔记
  • 华为OD机试 - 相同数字的积木游戏1(JS)
  • Linux系统之iptables应用SNAT与DNAT
  • 2023美赛ABCDEF思路汇总
  • Damask和abaqus晶体塑性联合仿真培训通知
  • 用javascript分类刷leetcode17.栈(图文视频讲解)
  • 转换大小写与完成字符串反转
  • 大数据框架之Hadoop:MapReduce(三)MapReduce框架原理——InputFormat数据输入
  • 【Opencv 系列】 第4章 直方图
  • C#反射原理
  • python+vue微信小程序的线上服装店系统
  • 众德全自动批量剪辑工具,批量去重伪原创视频,全自动合成探店带货等视频
  • 【项目精选】基于网络爬虫技术的网络新闻分析(论文+源码+视频)
  • 华为OD机试 - 任务混部(JS)
  • Matlab搭建AlexNet实现手写数字识别
  • 比较全面的HTTP和TCP网络传输的单工、全双工和半双工
  • CSS Houdini
  • C++引用
  • YOLOv6-目标检测论文解读