js单例模式

保证一个类只有一个实例,并提供一个访问它的全局访问点

实现

静态方法实现

js 复制代码
class SingleTon{

  

    //全局的访问点

    static getInstance(){

        // 保证一个类只有一个实例

        if(!this.instance)

        {

            this.instance=new SingleTon()

        }

        return this.instance

    }

  
  

}

  

let a=SingleTon.getInstance()

let b=SingleTon.getInstance()

  

console.log(a==b); //true

闭包实现

js 复制代码
  

//2.闭包实现

function SingleTonBase(name)

{

    this.name=name

    console.log("构造函数::",name);

}

function getInstance()

{

    let instance = null;

    return function(name){

        if(!instance)

        {

            instance = new SingleTonBase(name)

        }

        return instance

    }

}

  
  

let SingleTon=getInstance()

  

let a=SingleTon("aaaa")

let b=SingleTon("bbb")

//构造函数:: aaaa

console.log(a==b); //true

Pinia中的单例模式

在Pinia中,单例模式的实现是通过defineStore函数来完成的。

这个函数接受一个唯一的字符串作为参数,用于标识store。 当defineStore函数被调用时,它会执行以下步骤:

  1. 首先,defineStore函数会检查是否已经存在一个具有相同标识的store实例。如果已经存在,则直接返回该实例。
  2. 如果不存在,则defineStore函数会创建一个新的store实例。这个实例是一个单例对象,在整个应用程序中是唯一的。
  3. 接下来,defineStore函数会为store实例添加一些属性和方法,例如stateactionsgetters等。这些属性和方法用于定义store的状态、行为和计算属性。
  4. 最后,defineStore函数会返回新创建的store实例。 通过这种方式,Pinia能够在整个应用程序中共享状态,并且保证了状态的一致性和可预测性。同时,单例模式也使得状态的管理更加简单和易于维护。
相关推荐
mit6.8242 分钟前
C 语言仓库引入 Rust: MCUboot 为例
开发语言·rust
阿沁QWQ3 分钟前
STL和string实现
开发语言·c++
f***68603 分钟前
MS SQL Server partition by 函数实战二 编排考场人员
java·服务器·开发语言
vi121238 分钟前
ENVI 地形量化与植被指数反演
开发语言·python
u***284712 分钟前
golang debug调试
开发语言·后端·golang
DevUI团队16 分钟前
解锁前端高阶调试:浏览器/IDE/Git技巧分享
前端·javascript·html
lly20240620 分钟前
Bootstrap 滚动监听
开发语言
星释22 分钟前
Rust 练习册 99:让数字开口说话
开发语言·后端·rust
子豪-中国机器人23 分钟前
C++自定义结构体学习方法:
java·开发语言
CoolerWu27 分钟前
Trae Solo 实战指南:从"会用"到"用好"的协作方法论
前端·javascript