设计模式之单例模式

只有一个实例,全局可访问该实例

我们实现一个简单的单例模式,进行实例化的过程中我们先判断实例是否存在,如果不存在则new一个,存在那就返回该实例。多次调用都是返回同一个实例对象

javascript 复制代码
let Singleton = function (name) {
  this.name = name
  // 用来判断实例是否已经创建
  this.instance = null
}

Singleton.prototype.getName = function () {
  console.log(this.name)
}

Singleton.getInstance = function (name) {
  // 如果已经存在实例,则返回这个实例
  if (this.instance) {
    return this.instance
  }
  
  // 不存在则new一个,并且要保存到对应的instance中
  return this.instance = new Singleton(name)
}

let yu = Singleton.getInstance('yujian')
let hua = Singleton.getInstance('hua')

yu.getName()
hua.getName()

结果为

相关推荐
zzu123zsw15 小时前
业务拆分后的治理深水区:解构企业级微服务六大核心设计模式与高可用落真实践
微服务·设计模式·架构·高可用·微服务架构设计
牧瀬クリスだ15 小时前
观察者模式:一个对象变化,一群对象自动响应
java·观察者模式·设计模式
拆房老料18 小时前
【第四部分:Agentic 智能体设计模式】16. 一个 Prompt 搞不定复杂任务?试试 Prompt Chaining
java·前端·人工智能·设计模式·prompt
MobotStone1 天前
AI 写代码越来越爽,但程序员可能越来越废了
人工智能·设计模式
墨子夕1 天前
设计模式——Java × Python 双语言精讲 · 23 个经典模式 + 现代演进(前言篇)
java·开发语言·设计模式
墨子夕1 天前
设计模式——Java × Python 双语言精讲 · 23 个经典模式 + 现代演进(第一篇)
java·python·设计模式
General_G1 天前
创建型模式—原型(Prototype)模式
c++·设计模式·原型模式
geovindu2 天前
rust: Template Method Pattern
开发语言·后端·设计模式·rust·行为模式·模板方法模
geovindu2 天前
rust: Template Method Pattern(续)
开发语言·后端·设计模式·rust·行为模式·板方法模式
博风2 天前
17、设计模式应用举例:单件模式:多线程争冠军
设计模式