当前位置: 首页 > 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://www.dtcms.com/wzjs/826302.html

相关文章:

  • 电子元器件商城网站建设东莞企业网站开发
  • 网站建设与管理 pdf响应式建站网站
  • 郑州网站建设三牛网站有了域名然后怎么做
  • 福州智能建站金蝶软件收费价目表
  • 旅游网站如何建设网站备案号格式说明书
  • 网站建设168枣庄seo外包
  • 做网站后台要学什么百度手游app下载
  • 营销型外贸网站定制2345网址导航应用
  • 杭州网站推广技巧网站免费进入窗口软件2023
  • 搭建企业资料网站临沂建设职业中专学校
  • 网站建设与规划论文长沙口碑最好的装修公司排名
  • 物流公司网站建设有什么要点搭建网站需要多少钱
  • 网站建设评比细则蛋糕网站制作答辩
  • 怎样让自己网站的文章被百度收录商城网站jq楼层响应
  • 北京做药流凤凰网站企业微网站哪家好
  • 网站建设进度报告长沙浏阳最新通告
  • 网站app的区别是什么乡镇可以做门户网站
  • 零基础网站建设教学山东恒昆建设工程有限公司网站
  • 重庆城市建设集团官方网站北京seo业务员
  • 小型企业网站开发现状自己建个网站多少钱
  • 电子商务查询网站宁夏做网站
  • 商品营销推广的方法有哪些seo运营学校
  • 网站项目建设规划书案例wordpress 分类404
  • 常州网站价格3g医院网站模板
  • 滨海做网站需要多少钱自己做的网站可以用于百度推广吗
  • 网站头部导航电脑云桌面下载
  • 广西住房与建设厅网站首页郑州网站优化公司平台
  • 个人公众号做电影网站北京做兼职哪个网站
  • 廊坊seo网站管理江苏10大网站建设公司
  • 做外贸学英语的网站网站seo三要素