TS实现单例模式
class Axios {
// 由于 instance 是一个静态属性,它会在整个应用程序的生命周期内保持存在,除非显式地将其设置为 null 或通过其他方式清除它的引用。
private static instance: Axios | null = null
url: string
timeout: number
// 通过把构造函数设为私有,防止外部通过 new 实例化
private constructor(url: string, timeout: number) {
this.timeout = timeout
this.url = url
}
static create(url: string, timeout: number): Axios {
if (Axios.instance === null) {
Axios.instance = new Axios(url, timeout)
}
return Axios.instance
}
}
// 要求是:所有实例均为一个
let axios1 = Axios.create('www.heima.com', 3000)
let axios2 = Axios.create('www.itcast.cn', 5000)
console.log(axios1, axios2);
console.log(axios2 === axios1) // true
// new Axios // 类“Axios”的构造函数是私有的,仅可在类声明中访问。
js实现单例模式
const singleton = (function() {
// 私有变量和方法
let instance;
function init() {
// 单例初始化逻辑
// ...
return {
// 对外公开的方法和属性
// ...
};
}
return {
getInstance: function() {
if (!instance) {
instance = init();
}
return instance;
}
};
})();
// 使用单例
const instance1 = singleton.getInstance();
const instance2 = singleton.getInstance();
console.log(instance1 === instance2); // true,同一个实例
标签:Axios,单例,url,模式,instance,timeout,null
From: https://www.cnblogs.com/byj666/p/18084257