美文网首页
js设计模式-单例模式(1)

js设计模式-单例模式(1)

作者: 疯狂吸猫 | 来源:发表于2019-11-20 14:54 被阅读0次

    github所有关于设计模式的代码:js学习设计模式记录

    1.单例模式

    目的:让项目中仅存在一个SingleObj的实例,多次声明实例获取到的都是同一个实例,不会进行多次new。
    实现思路:SingleObj.getInstance()代替new SingleObj()来获取实例,以控制SingleObj仅有一个实例。
    SingleObj.getInstance()的返回值每次都是同一个实例,所以SingleObj.getInstance()中储存着一个SingleObj的实例。所以利用闭包储存一个SingleObj实例

    //单例模式1
    class SingleObj{
    }
    SingleObj.getInstance=(function(){
        const instance=new SingleObj()
        return function () {
            return instance
        }
    })()
    const ins1=SingleObj.getInstance()
    const ins2=SingleObj.getInstance()
    console.log(ins1===ins2)//true
    

    上面的代码实现了单例模式,但是使用了自执行函数在SingleObj.getInstance被声明阶段就执行new SingleObj()。让getInstance即使没有被调用进行了SingleObj的实例化。造成了一开始不必要的资源浪费,所以需要将new SingleObj的操作滞后

    //单例模式2
    class SingleObj{
    }
    SingleObj.getInstance=(function(){
        let instance=null
        return function () {
            if(!instance)
            {
                instance=new SingleObj()
            }
            return instance
        }
    })()
    const ins1=SingleObj.getInstance()
    const ins2=SingleObj.getInstance()
    console.log(ins1===ins2)//true
    

    相关文章

      网友评论

          本文标题:js设计模式-单例模式(1)

          本文链接:https://www.haomeiwen.com/subject/fmeoictx.html