美文网首页
单例模式实现思路

单例模式实现思路

作者: 荔桑 | 来源:发表于2021-04-30 23:03 被阅读0次
    class SingleDog {
        show() {
            console.log('我是一个单例对象')
        }
        static getInstance() {
            // 判断是否已经new过1个实例
            if (!SingleDog.instance) {
                // 若这个唯一的实例不存在,那么先创建它
                SingleDog.instance = new SingleDog()
            }
            // 如果这个唯一的实例已经存在,则直接返回
            return SingleDog.instance
        }
    }
    
    const s1 = SingleDog.getInstance()
    const s2 = SingleDog.getInstance()
    
    // true
    s1 === s2
    

    闭包实现方式:

    SingleDog.getInstance = (function() {
        // 定义自由变量instance,模拟私有变量
        let instance = null
        return function() {
            // 判断自由变量是否为null
            if(!instance) {
                // 如果为null则new出唯一实例
                instance = new SingleDog()
            }
            return instance
        }
    })()
    

    相关文章

      网友评论

          本文标题:单例模式实现思路

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