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

设计模式 — — 单例模式

一、是什么

单例模式只会在全局作用域下创建一次实例对象,让所有需要调用的地方都共享这一单例对象

二、实现

// 单例构造函数
function CreateSingleton (name) {this.name = name;this.getName();
};// 获取实例的名字
CreateSingleton.prototype.getName = function() {console.log(this.name)
};
// 单例对象
const Singleton = (function(){var instance;return function (name) {if(!instance) {instance = new CreateSingleton(name);}return instance;}
})();// 创建实例对象1
const a = new Singleton('a');
// 创建实例对象2
const b = new Singleton('b');console.log(a===b); // true

三、使用场景

页面存在一个模态框的时候,只有用户点击的时候才会创建,而不是加载完成之后再创建弹窗和隐藏,并且保证弹窗全局只有一个

const getSingle = function( fn ){let result;return function(){return result || ( result = fn .apply(this, arguments ) );}
}; 
const createLoginLayer = function(){var div = document.createElement( 'div' );div.innerHTML = '我是浮窗';div.style.display = 'none';document.body.appendChild( div );return div;
}; const createSingleLoginLayer = getSingle( createLoginLayer ); document.getElementById( 'loginBtn' ).onclick = function(){var loginLayer = createSingleLoginLayer();loginLayer.style.display = 'block';
};

Vuex、redux全局态管理库也应用单例模式的思想

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

第三方库都是单例模式,多次引用只会使用同一个对象,如jquery、lodash、moment

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

相关文章:

  • C++:菱形继承与虚继承
  • 贡献法:USACO 2021 December Contest Bronze:孤独的照片
  • Java实现简单的通讯录
  • 服务器数据恢复—raid5热备盘上线同步数据失败的如何恢复数据
  • 探索C语言中的循环结构
  • 数学建模-估计出租车的总数
  • 设计模式在芯片验证中的应用——装饰器
  • Python 查找并高亮PDF中的指定文本
  • LEETCODE LCS 03. 主题空间
  • 【Spring Boot 源码学习】深入应用上下文初始化器实现
  • 【Docker】一文趣谈Docker
  • 代码随想录day19(2)二叉树:二叉树的最大深度(leetcode104)
  • Lua中文语言编程源码-第五节,更改lcorolib.c协程库函数, 使Lua加载中文库关键词(与所有的基础库相关)
  • Docker学习之数据管理(超详解析)
  • FDTD液晶折射率各项异性表示方法
  • RoketMQ主从搭建
  • Linux网络瑞士军刀 nc(netcat)
  • 1.Spring入门
  • 【JavaEE Spring 项目】消息队列的设计
  • SpringFramework学习笔记(Spring IoC,aop,tx)
  • 口腔管理平台 |基于springboot框架+ Mysql+Java+B/S结构的口腔管理平台 设计与实现(可运行源码+数据库+lw文档)
  • 【设计模式】Java 设计模式之工厂模式(Factory Pattern)
  • 安卓UI面试题 36-40
  • Java有哪些常用的集合?
  • 虚拟机网络链接
  • 代码随想录阅读笔记-字符串【反转字符串】
  • 4. Linux文件属性和目录系列
  • Linux第78步_使用原子整型操作来实现“互斥访问”共享资源
  • C++——C++11(3)
  • 更改el-tabs默认样式,实现tab标签居中显示,标签对应内容使用另一个div显示