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

网站建设新闻分享西安网站推广公司电话

网站建设新闻分享,西安网站推广公司电话,广州专业做网站公司,淄博网站制作营销那么单例模式都有哪些应用场景呢?如何通过构造函数创建单例如何使用模块化的方式创建总结 各位老铁们,今天我们介绍一下JS中单例设计模式,它的特点是确保一个类只有一个实例,并提供一个全局访问点来获取该实例(无论被创…

  • 那么单例模式都有哪些应用场景呢?
  • 如何通过构造函数创建单例
  • 如何使用模块化的方式创建
  • 总结

各位老铁们,今天我们介绍一下JS中单例设计模式,它的特点是确保一个类只有一个实例,并提供一个全局访问点来获取该实例(无论被创建或实例多少次)。接一下从不同角度来实现各场景下的创建过程;

那么单例模式都有哪些应用场景呢?

下面列出常用的几个方面

  • 全局状态管理:例如 Redux 中的 Store。
  • 配置对象:确保配置对象在整个应用中只有一个实例。
  • 数据库连接池:避免重复创建数据库连接。
  • 日志记录器:确保日志记录器是唯一的。

如何通过构造函数创建单例

通过判断instance这个变量是否存在,如果存在或非undefind则返回实例对象,否则将当前类实例的this重新指向instance

class Singleton01 {constructor() {if (Singleton01.instance) {return Singleton01.instance;}Singleton01.instance = this;}
}

那么实例创建好了,我们通过什么方式来获取呢,可以通过定义一个static静态方法来获取这个实例,这样即能实例唯一性问题;

//这个非常简单即当instance不存在时重新new一个class对象给它,如果存在则直接返回class这个类的instance变量出去即可;
static getInstance() {if (!Singleton01.instance) {Singleton01.instance = new Singleton01();}return Singleton01.instance;
}

接下来通过实际示例演示一下,利用constructor创建单例和new出来的对象,以及多次创建是否一致;

let instance1 = Singleton01.getInstance();
let instance2 = Singleton01.getInstance();
let instance3 = new Singleton01();console.log('instance1 === instance2:',instance1 === instance2); //返回true
console.log('instance1 === instance3:',instance1 === instance3); //返回true//可以看出两种结果其实构建出来的对象完全一致,指针最终都会指向一个对象

在这里插入图片描述

如何使用模块化的方式创建

  1. 先在全局定义用于接收实例的变量
let instance;
  1. 然后在构造函数中为上面全局变量进行当前实例赋值
let instance02;
//如果不是vue项目那么export default关键字可以不设置,其下面的导入方式也可以改为文件导入方式
export default class Singleton02 {constructor() {if (instance02) {return instance02;}instance02 = this;}
}
  1. 最后通过导入类来实例,这样创建出来的最终都会指向全局变量instance
import Singleton from 'pattern/singleton_02.js'let instance4 = new Singleton();
let instance5 = new Singleton();
console.log('instance4 === instance5:', instance4 === instance5); //返回true

总结

单例模式的核心是确保一个类只有一个实例,可以通过构造函数、静态方法、闭包或模块化等方式实现。一般适用于需要全局唯一或单一对象的情况下使用;


文章转载自:

http://L3awUyuK.crsqs.cn
http://X2L50CeJ.crsqs.cn
http://AmxWPSrp.crsqs.cn
http://HOzG94ZI.crsqs.cn
http://BEHjcNVF.crsqs.cn
http://3LVAlCBG.crsqs.cn
http://0ngiIYX4.crsqs.cn
http://u3jk55n8.crsqs.cn
http://njNgZ7qe.crsqs.cn
http://qgOqpSl5.crsqs.cn
http://P9zOIbBw.crsqs.cn
http://seGsHxRU.crsqs.cn
http://wklHsEtP.crsqs.cn
http://qCYhd6Yc.crsqs.cn
http://ljqNKuvn.crsqs.cn
http://LRLYL5t0.crsqs.cn
http://Hz96b3E6.crsqs.cn
http://qbpn86cp.crsqs.cn
http://g4ier1WR.crsqs.cn
http://BYgVOrVK.crsqs.cn
http://54GxLnUy.crsqs.cn
http://ri95Bdnz.crsqs.cn
http://nZePAURX.crsqs.cn
http://xY4TEqqc.crsqs.cn
http://8SFYiQsW.crsqs.cn
http://AxkV0ED7.crsqs.cn
http://o618g7vh.crsqs.cn
http://sSxsWrd3.crsqs.cn
http://ttoQ4kaD.crsqs.cn
http://wfAwpJv6.crsqs.cn
http://www.dtcms.com/wzjs/780006.html

相关文章:

  • 邢台做网站优化网站流量所需的成本.
  • p2p网上贷款网站建设方案网站建设与维护试题含答案
  • 建立网站的阶段个人电脑做服务器网站
  • 自己有网站怎么做app上海企业网站建设费用
  • 霞浦建设局总规网站网络公司制作网站
  • 上海设计公司网站氪星人 wordpress
  • 教育机构电商网站建设加盟十堰seo优化
  • 做网站后台要学什么郴州市住房和城乡建设局网站
  • 做网站需要哪些技术人员汽车网站哪个好
  • 网站开发和建设设计网站 常用字体
  • 西宁网站建设高端wordpress教程帕兰
  • 江苏省建设工程八大员考试网站门户网站如何做seo
  • 网站建站 seo资讯是做网站还是公众号
  • 山西网站建设适合v加xtdseo做网站用什
  • 个人网页模板网站免费字体下载
  • 网站建设审核需要多长时间旅行社网站怎么做
  • 企业宣传类网站建设可以做众筹的网站
  • 深圳有名的做公司网站作品集的个人网站怎么做
  • 建设银行手机银行官方网站下载松原网站建设哪家好
  • 网站开发设计书家庭路由器建个人网站
  • 基于html5的购物网站开发网站建设与管理课程总结
  • 织梦cms 5.6网站地图圣诞节网页设计模板图片
  • 网站建设自查报告邢台房产网
  • 网站建设业preec网站
  • 做视频网站需要什么高端技术网站制作完成之后
  • 做网站的书籍推荐网站内做关键词连接
  • 医疗 网站前置审批石家庄网络公司有哪些
  • 做书照片网站网站和后台建设
  • 店面建设网站的必要性电话销售管理系统
  • 番禺免费核酸检测阳城seo排名