设计模式--单例模式学习

24 阅读1分钟
定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点。例如vuex状态管理、浏览器window对象等,他们只会实例化一次,之后所有时间访问拿到的都是同一个对象。

1.代码实现

// 自定义命名空间,防止变量污染
const single_space = {
    example1: {}
}
// 采用闭包方式,控制永久只创建一个实例
let getSingle = function (fn) {
    let result = null
    return function() {
        return result || result = fn.apply(this, arguments)
    }
}
// 加入我当前想实现,多次触发,但只创建一次div
let createDiv = function () {
    let div = document.createElement('div')
    div.innerHTML = '这是一个div'
    div.style.display = none
    document.body.append(div)
    return div
}
let getInstance = getSingle(createDiv)

//后续多次调用getInstance方法,只会执行一次创建dom的操作,后续会取用已经创建好的dom
getInstance()
getInstance()
...