1. 简介
在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例。即一个类只有一个对象实例
1-1. 定义
- 保证一个类仅有一个实例,并提供一个访问它的全局访问点
1-2. 注意
- 单例类只能有一个实例。
- 单例类必须自己创建自己的唯一实例。
- 单例类必须给所有其他对象提供这一实例【全局访问】。
1-3. 优点
- 减少了内存的开销
- 减少了对资源的多重占用
2. 实现
针对单一场景,如果存在多个场景需要重复编写
var Test = (function() {
var instance;
return function (name){
if (typeof instance === 'object') {
return instance;
}
instance = this;
this.name = name;
}
})();
var a = new Test();
Test.prototype.lastName = 'bifang';
var b = new Test();
console.log(a === b, a.lastName, b.lastName); //true 'bifang' 'bifang'
3. 提取通用单例
通过方法将普通方法转换为单例方法
var getSingle = function( fn ){
var result;
if(!result){
result = fn.apply(this, arguments)
}
return function(){
return result
};
};
//使用
var singleFn = getSingle(fn);