JS设计模式之单例模式

单例模式

单例模式的核心是保证一个类仅有一个实例,并提供一个访问它的全局访问点
举个例子来说单例模式的好处:比如说当我们点击了登录按钮之后,页面需要创建一个登录框,但是如果我们多次点击登录按钮,那么这个登录框就会被重新创建多次,这样会影响网页的性能,那么它只被创建一次,每次点击都显示之前创建的浮窗,那么网页性能就会大大提升。

单例模式基本的实现思路

一个类只能返回一个对象的引用(并且永远都是同一个)和一个获得该实例的方法(静态方法,一般使用getInstance名称)。

实现步骤

1.将该类的构造方法定义为私有方法,这样其他的代码就无法通过调用该类的构造方法来实例化该类的对象,只有通过该类提供的静态方法来得到该类的唯一实例
2.在该类内提供一个静态方法,当我们调用这个方法时,如果类持有的引用不为空就返回这个引用,如果该类保持的引用为空就创建该类的实例并将实例的引用赋予该类保持的引用。

//JS使用单例模式
class SingleObject{
    login(){
        console.log('登录中......')
    }
}
SingleObject.getInstance = (function(){
    let instance
    return function(){
        if(!instance){
            instance = new SingleObject();
        }
        return instance
    }
})()
//注意这里只能使用静态函数getInstance,不能使用new SingleObject()
let obj1 = SingleObject.getInstance()
obj1.login()
let obj2 = SingleObject.getInstance()
obj2.login()
console.log(obj1 === obj2)

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值