- 使用场景
单例模式的优点主要体现在节省内存,始终只使用一个实例,所用到的场景也往往是,虽然实例可能会被多次使用,但每次使用都是独立发生的,而不是同时进行的。 个人简单理解
单例模式就是创建一个唯一的类的实例。如果该实例没有被创建,创建该实例;否则返回已经被创建的实例。
根据上面的理解,创建一个简单的单例模式
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
30var SingleTon = (function () {
var instance; // 创建一个单例模式的实例变量
function init () {
// 创建私有变量以及私有方法
var privateVar = '私有变量',
privateNum =Math.random();
function privateMethod () {
console.log('私有方法');
}
return {
// 公有变量以及公有方法
publicVar: '公有变量',
publicMethod: function() {
console.log('公有方法')
},
getNum: function () { // 公有方法,访问私有变量
return privateNum;
}
}
}
return {
getInstance: function () {
if (!instance) {
instance = init();
}
return instance;
}
}
})()下面我们分别在控制台执行下面得代码
1
2
3
4var instance1 = SingleTon.getInstance();
var instance2 = SingleTon.getInstance();
console.log(instance1);
console.log(instance2);运行结果如下所示:
接下来我们来看一下两个对象是否是同一个对象:我们使用全等运算符来比较
1
2// 在控制台输出以下代码
console.log(instance1 === instance2);运行结果如下所示
控制台输出true
。说明两个对象是同一个对象。
单例模式
Last updated: