JavaScript与设计模式———单例模式(含ts代码)

本文探讨了JavaScript中的单例模式,强调了其在系统中确保唯一实例的重要性,并通过TypeScript展示了如何实现。同时,列举了在jQuery、Vuex和Redux Store中的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

意义

介绍

系统中被唯一使用

一个类只有一个实例

数据同步

类和UML类图

在这里插入图片描述

TypeScript

class SingleObject {
    // 私有化构造函数能防止被意外 new
    private constructor () {};
    // 标识这个实例
    private static instance: SingleObject;
    // 创建实例的唯一方式在类内部
    public static getInstance(): SingleObject {
        // 若是已经创建则直接返回,若是未创建则创建
        if (!this.instance) {
            this.instance = new SingleObject();
        }
        // 方法和instance标识都是静态,可以访问同一个
        return this.instance;
    }
    public login(): void {
        console.log('login');
    }
}
// 模拟创建实例
let single1: SingleObject = SingleObject.getInstance();
let single2: SingleObject = SingleObject.getInstance();

// 其实是同一个实例
console.log(single1 === single2); // true

// let a = new SingleObject() // 会报错

应用场景

一个类只需要被实例化一次就应该要想到使用单例设计模式

jquery

// jQuery 只有一个 `$`
if (window.jQuery != null) {
    return window.jQuery
} else {
    // init
}

vuex

redux中的store

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值