关注大师不迷路,大师带你上高度~


前言

关注大师不迷路,大师带你上高度~
单例模式(Singleton Pattern)是软件工程中最简单的设计模式之一,属于创建型模式。它限制一个类只能创建一个实例,并提供全局访问该实例的方式。

一、单利模式是什么?

单例模式是一种创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点来获取该实例。

二、使用步骤

不使用单利模式

代码如下:

//静态和实例的对比
class Foo {
    name: string
    constructor(name: string) {
        this.name = name
    }
    getName() {
        return this.name
    }
    static flag: string = 'abc'
    static getFlag() {
        return this.flag
    }
}
//非静态的实例不固定
const f1 = new Foo('张三')
f1.getName()//张三
const f2 = new Foo('李四')
f2.getName()//李四
//静态的固定
Foo.getFlag()//abc

使用单利模式

代码如下:

//单例
class SingleTon {
    name: string
    //单例的对象
    private static instance: SingleTon | null
    //private修饰的构造函数 constructor,无法在外边实例化
    private constructor(name: string) {
        this.name = name
    }
    //获取单例
    static getInstance(name: string): SingleTon {
        if (SingleTon.instance == null) {
            SingleTon.instance = new SingleTon(name)
        }
        return SingleTon.instance
    }
}
const s1 = SingleTon.getInstance('张三')
const s2 = SingleTon.getInstance('李四')
console.log(s1.name)//张三
console.log(s2.name)//张三
console.log(s1 === s2);//true

//在java等多线程语言中,为了避免并发导致的单例不唯一,要加线程锁,js是单线程的没问题

注:不要纠结于单例模式严格的应用,要学会其思想

总结

单例模式的特点
唯一实例:整个应用程序中,某个类只能有一个实例
全局访问:提供一个静态方法来获取该唯一实例
延迟创建:通常在第一次使用时才创建实例
私有构造函数:构造函数设为私有,防止外部直接实例化

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐