单例模式
- 单例模式仅允许类或对象具有单个实例,并且它使用全局变量来存储该实例
- 实现方法是判断是否存在该对象的实例,如果已存在则不再创建
- 使用场景适用于业务场景中只能存在一个的实例,比如弹窗,购物车
// 定义单例函数/类
function SingleShopCart() {
let instance;
function init() {
// 这里定义单例代码
return {
buy(good) {
this.goods.push(good)
},
goods: []
}
}
return {
getInstance: function () {
if (!instance) {
instance = init()
}
return instance
}
}
}
// 获取单例对象
let ShopCart = SingleShopCart()
let cart1 = ShopCart.getInstance()
let cart2 = ShopCart.getInstance()
cart1.buy('apple')
cart2.buy('orange')
console.info(cart1.goods)
console.info(cart2.goods)
console.info(cart1 === cart2)