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

设计模式 — — 单例模式

一、是什么

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

二、实现

// 单例构造函数
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.kler.cn/a/272099.html

相关文章:

  • windows下本地部署安装hadoop+scala+spark-【不需要虚拟机】
  • Flink Gauss CDC:深度剖析存量与增量同步的创新设计
  • 高效安全文件传输新选择!群晖NAS如何实现无公网IP下的SFTP远程连接
  • 基于微信小程序高校订餐系统的设计与开发ssm+论文源码调试讲解
  • C#中的语句
  • 常用排序算法之插入排序
  • 【回归预测】基于SSA-BP(麻雀搜索算法优化BP神经网络)的回归预测 多输入单输出【Matlab代码#69】
  • 腾讯云2核2G免费服务器申请流程,2024免费服务器入口
  • 鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:FormLink)
  • 使用 VS Code + Github 搭建个人博客
  • SpringBoot+vue3打造企业级一体化SaaS系统
  • (C++进阶)boost库笔记
  • 前端项目构建过程中涉及低代码部分思考
  • vue3 el-form中嵌套el-tabale 对输入动态校验
  • 算法-贪心-122. 糖果传递
  • js截取字符串的几种方法
  • 海豚调度系列之:任务类型——SQL节点
  • JavaSE、JavaEE和Jakarta EE的历史、区别与联系
  • C#创建第一个PIESDK模版的项目
  • 力扣100热题:两、三、四数之和,哈希+数组+双指针+排序
  • 【智能算法】斑鬣狗优化算法(SHO)原理及实现
  • UE4 虚幻4快捷键教程
  • Rust 如何优雅关闭 channel
  • JVM实战篇
  • HTML静态网页成品作业(HTML+CSS)——游戏战地介绍设计制作(4个页面)
  • C#设计原则