js设计模式 --- 单例设计模式

逻辑漫游
• 阅读 1953

js设计模式

设计模式是最佳实践, 是前辈们在程序设计过程中总结出的精华, node 出现之前 javascript作为前端脚本语言很少使用设计模式, 随着 node 的横空出世, 已经没有人能阻挡它的跨领域发展, 是时候思考一下设计模式的 js 实现

往常设计模式在javaEE中讨论的比较多, 当然单例设计模式也有很多种实现方法, 在这里可能至列举了一些比较笔者认为传统的实现方法, 后续会陆续补充完善

单例设计模式

ES5

采用 js 静态属性实现, 在类函数上挂载一个实例和一个获取该事例的方法

let Person = (function () {
  function Person(name) {
    this.name = name; 
  }
  Person.getInstance = function(name) {
    if(!this.instance) {
      this.instance = new Person(name);
    }
    return this.instance;
  }
  return Person;
})()

可以再此基础上改造 屏蔽该类 禁止外部使用 new 关键字, 将前者挂载在类上面获取事例的函数去掉, 改为直接返回一个具有获取实例函数的对象

let Person = (function () {
  function Person(name) {
    this.name = name; 
  }
  return {
    getinstance: function(name) {
      if(!Person.instance) {
        Person.instance = new Person(name);
      }
      return Person.instance;
    }
  };
})()

ES6

此方案与上面采用的是同样的思路, 只是采用了ES6的语法

class Dog {
  constructor(name) {
    this.name = name;
  }
  static getInstance(name) {
    if(!this.instance) {
      this.instance = new Dog(name);
    }
    return this.instance;
  }
}
点赞
收藏
评论区
推荐文章
徐小夕 徐小夕
4年前
《前端实战总结》之使用解释器模式实现获取元素Xpath路径的算法
前端领域里基于javascript的设计模式和算法有很多,在很多复杂应用中也扮演着很重要的角色,接下来就介绍一下javascript设计模式中的解释器模式,并用它来实现一个获取元素Xpath路径的算法。上期回顾《前端实战总结》之迭代器模式的N1种应用场景(https://juejin.im/post/6844904008616771591)
3A网络 3A网络
2年前
Golang 常见设计模式之单例模式
之前我们已经看过了Golang常见设计模式中的装饰和选项模式,今天要看的是Golang设计模式里最简单的单例模式。单例模式的作用是确保无论对象被实例化多少次,全局都只有一个实例存在。根据这一特性,我们可以将其应用到全局唯一性配置、数据库连接对象、文件访问对象等。Go语言实现单例模式的方法有很多种,下面我们就一起来看一下。饿汉式饿汉式实现单例模式非
Wesley13 Wesley13
3年前
java中饿汉与懒汉的故事(单例设计模式)
java中的单例设计模式关于设计模式,这其实是单独存在的东西,它不属于java,但是在java中使用较多,所以今天我就给大家介绍下单例设计模式中的饿汉和懒汉这俩朴素的打工人。首先我先说明下单例设计模式是啥(如果不想了解,可以直接划下去看饿汉和懒汉):类的单例设计模式就是采用一定的方法保证在整个软件系统中,对某个类只能存在一
zdd小小菜鸟 zdd小小菜鸟
2年前
设计模式面试
设计模式面试1.单例设计模式使用设计模式为了代码复用,增加可维护性。设计模式的六大原则:开闭原则、里氏代换原则、依赖倒转原则、接口隔离原则、迪米特法则(最少知道原则)、合成/聚合复用原则Singleton(创建):保证一个类仅
海军 海军
4年前
JavaScript设计模式之单例模式
<sectionid"nice"datatool"mdnice编辑器"datawebsite"https://www.mdnice.com"style"fontsize:16px;color:black;lineheight:1.6;wordspacing:0px;letterspacing:0px;word
亚瑟 亚瑟
4年前
说说设计模式
设计模式设计模式(Designpattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总
Wesley13 Wesley13
3年前
JAVA设计模式之单例设计模式
    单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例。即一个类只有一个对象实例。  在JAVA中实现单例,必须了解JAVA内存机制,JAVA中实例对象存在于堆内存中,若要实现单例,必须满足两个条件:  1.限制类实例化对象。即只能产生一个对象。
Stella981 Stella981
3年前
JavaScript面向对象编程的15种设计模式
在程序设计中有很多实用的设计模式,而其中大部分语言的实现都是基于“类”。在JavaScript中并没有类这种概念,面向对象编程不是基于类,而是基于原型去面向对象编程,JS中的函数属于一等对象,而基于JS中闭包与弱类型等特性,在实现一些设计模式的方式上与众不同。ps:本文之讲述面向对象编程的设计模式策略,JavaScript原型的基础请参考阮一峰面向
Wesley13 Wesley13
3年前
23种设计模式(1):单例模式
定义:确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。类型:创建类模式类图:!23种设计模式(1):单例模式第1张|快课网(http://static.oschina.net/uploads/img/201407/05200605_0dij.gif"23种设计模式(1):单例模式
Wesley13 Wesley13
3年前
00_设计模式之语言选择
设计模式之语言选择设计模式简介背景设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。设计模式(Designpattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的
Wesley13 Wesley13
3年前
PHP常用的5大设计模式
设计模式(Designpattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。1.单例模式单例模式(Singlet