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); //true 'bifang' 'bifang'

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__