TS设计模式之单利模式
单例模式是一种创建型设计模式,确保类只有一个实例并提供全局访问点。通过私有构造函数和静态方法控制实例创建,实现资源统一管理。示例展示了非单例模式与单例模式的对比:前者每次new会创建新实例,后者通过getInstance方法始终返回同一实例。TypeScript实现中需注意静态属性存储单例,且构造函数设为private防止外部实例化。该模式适用于需全局唯一对象的场景,如配置管理、日志系统等。
·
关注大师不迷路,大师带你上高度~
前言
关注大师不迷路,大师带你上高度~
单例模式(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是单线程的没问题
注:不要纠结于单例模式严格的应用,要学会其思想
总结
单例模式的特点
唯一实例:整个应用程序中,某个类只能有一个实例
全局访问:提供一个静态方法来获取该唯一实例
延迟创建:通常在第一次使用时才创建实例
私有构造函数:构造函数设为私有,防止外部直接实例化
更多推荐
所有评论(0)