持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第4天,点击查看活动详情
介绍
引用下菜鸟教程的一段介绍👇🏻
单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。
大白话来说,就是一类一对象,至于为什么这样做,从两个方面来看:
- 性能上的问题,对象创建消耗资源大,例如一些地图sdk是提供单例来使用
- 方便管理,一些场景使用单个对象统一管理即可
业务场景
该场景主要是从第二方面来介绍单例使用
背景:项目中有多个不同业务,没办法很好的去统一api模块(即是项目中的apis目录)使用,也就是说,会存在一个项目多个axios去对应不同的业务,但是因为登录是已经是 打通的了,抽成一个Login类,势必每个要登录逻辑的页面都需要一个该对象来处理,但是为了更好维护项目登录状态的统一性,只初始化一个对象更符合当前业务场景。
转换成单例
// 登录类
class Login {
login () {}
}
上面的登录类只需要稍作修改就可以变一个单例
方法一:通过函数包装
function getSingleton() {
let single
return function(name, commonData) {
if (single) {
return single
} else {
return (single = new Login())
}
}
}
export default singleton()
方法二:静态方法
class Login {
static single = null
static getSingleton () {
if (Login.single) {
return Login.single
} else {
return (Login.single = new Login())
}
}
}