最近打算看完《JavaScript设计模式与开发实践》,今天先从第一个设计模式开始看并总结出自己的理解。
概念
单例模式:保证一个类仅存有一个实例,并提供一个访问它的全局访问点
优点
- 在内存里只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁实例。
- 那种需要对DOM进行创建销毁的场景也会提高性能。
实现
我觉得单例模式的核心就一句话,下面是伪代码let obj = null; if(!obj){ obj = xxx; }
1. 面对对象的实现方式
function Singleton(){}
// 要让最终返回的函数执行,返回实例,所以要加立即执行函数
Singleton.prototype.getInstance = (function(){
var instance = null
// 使用闭包,将instance这个变量保存在内存中
return function(){
if(!instance){
instance = new Singleton()
}
return instance
}
})()
var a = new Singleton().getInstance()
var b = new Singleton().getInstance()
console.log(a === b); // true
2. JavaScript的实现
let getSingle = function(fn){
let res = null;
return function(){
return res || (res = fn().apply(this, arguments));
}
}
- 本文链接:https://harry-qi.github.io/2022/01/01/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F-%E5%8D%95%E4%BE%8B%E6%A8%A1%E5%BC%8F/
- 版权声明:本博客所有文章除特别声明外,均默认采用 许可协议。