curTain

写一个单例模式。

定义

确保一个类只有一个实例,使每次获取的实例都是同一个。

代码实现

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
class Store {
constructor( name ){
this.name = name
}
getName(){
return this.name
}
setName( data ){
this.name = data
}
}
// 获取单例的方法 --- 使用闭包获取单例
Store.getInstance = (
function(){
let instance
return function( name ){
if( !instance ){
instance = new Store( name )
}
return instance
}
}
)()

let store1 = Store.getInstance( "你好" )
let store2 = Store.getInstance( "你好----" )

console.log( store1 )
console.log( store2 )
console.log( store1 === store2 )

运行结果

总结

单例模式运用非常广泛,只要在代码中涉及到只存在一个实例,就可以使用单例模式,

vuex 和 redux 就是使用单例模式构建。

写一个单例模式的要点:

  1. 使用一个特定函数来获取单例,
  2. 此函数使用闭包来确保但会单例是唯一的,
  3. 使用函数柯理化–接收传入参数

参考

JavaScript设计模式

JavaScript设计模式es6(23种)

JavaScript 中常见设计模式整理


 评论