前端设计模式(1)--单例模式

110 阅读1分钟

一, 定义

保证一个类仅有一个实例,并提供一个访问它的全局访问点.

二, 实现方式

实现一个管理单例的方法.如下, getSingle. 保证单例的唯一性.

const getSingle=(fn)=>{
    let result;
    return function(){
        return result || (result =fn.apply(this, arguements));
    }
}

使用 getSingle 得到一个获取单例对象的方法. 如下. 比如页面只允许创建一个layer div.

const createLayer = (html)=>{
    const div = document.createElement('div');
    div.innerHTML = html;
    document.body.appendChild(div);
    return div;
}
const createSingleLayer = getSingle(createLayer);
const layer = createSingleLayer('layer');
const layer1 = createSingleLayer('layer1');
console.log(layer === layer1); // true

三, 总结

创建对象(如createLayer)和管理单例对象的职责(如 getSingle)分布在两个不同的方法中,这两个方法组合起来才具有单例模式的威力