设计模式之单例模式

单例模式概念

单例模式,在JavaScript里,单例作为一个命名空间提供者,从全局命名空间里提供一个唯一的访问点来访问该对象。

在JavaScript里,实现单例的方式有很多种,其中最简单的一个方式是使用对象字面量的方法,其字面量里可以包含大量的属性和方法:

1
2
3
4
5
6
7
var girl = {
name:'郝阿由',//小孩的姓名
weight:'7斤八两', //小孩的体重
create:function () {
return "小孩的名字是"+this.name+"小孩的体重是"+this.weight;
}
};

如果以后要扩展该对象,你可以添加自己的私有成员和方法,然后使用闭包在其内部封装这些变量和函数声明。只暴露你想暴露的public成员和方法,并且在使用的时候才初始化,为了节约资源的目的,我们可以另外一个构造函数里来初始化这些代码,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
var Babytest=(function () {
// body...
function Baby(data){
if(!(this instanceof Baby)){
return new Baby(data);
}
this.name=data.name||'郝阿由'; //小孩的姓名
this.weight=data.weight||'7斤八两'; //小孩的体重
}
Baby.prototype.create= function () {
return "小孩的名字是"+this.name+"小孩的体重是"+this.weight;
};
//实例容器
var instance;
var _static = {
name: 'Babytest',
//获取实例的方法
//返回Baby的实例
getInstance: function (args) {
if (instance === undefined) {
instance = new Baby(args);
}
return instance;
}
};
return _static;
})();
var baby=Babytest.getInstance({name:"郝美丽"});
console.log( baby.create());

单例一般是用在系统间各种模式的通信协调上