单例模式的核心是确保只有一个实例,并提供全局访问。
例如:登录按钮点击后只弹出一个窗口,再次点击按钮时,会判断当前是否已经存在窗口,如果存在则不再重复创建窗口。
let loginWindownInstance = null;
function createLoginWindow(){
if (!loginWindownInstance){ // 保证只create一次,如果存在则直接return,否则create
loginWindownInstance = document.createElement('div');
...
}
return loginWindownInstance;
}
另一个例子就是大量庞大的计算时,也可以使用单例方式缓存下来历史计算记录,如果存在则直接return,可以减少大量重复性的计算损耗
let countCacheMap= null; // 保证每个key只保留一次,用于缓存曾经计算过的值,如果存在则不再重复计算,直接return出来。
function countHandle (x, y){
let key = x+'' +y
if (Object.keys.findindex(key) !== -1){
return counCacheMap[key]; // 如果存在则不再重复计算,直接return出来。
}
let countAmount = x * y * 1200 /3.14;
counCacheMap[key] = countAmount;
return countAmount;
}