1. 简介
在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例。即一个类只有一个对象实例
1-1. 定义
- 保证一个类仅有一个实例,并提供一个访问它的全局访问点
1-2. 注意
- 单例类只能有一个实例。
- 单例类必须自己创建自己的唯一实例。
- 单例类必须给所有其他对象提供这一实例【全局访问】。
1-3. 优点
2. 实现
针对单一场景,如果存在多个场景需要重复编写
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| 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);
|
3. 提取通用单例
通过方法将普通方法转换为单例方法
1 2 3 4 5 6 7 8 9 10 11 12
| var getSingle = function( fn ){ var result; if(!result){ result = fn.apply(this, arguments) } return function(){ return result }; };
var singleFn = getSingle(fn);
|
__END__