JavaScript设计模式(1)—— 单例模式

  单例模式的定义是:保证一个"类"仅有一个实例,并提供一个访问它的全局访问点。 

  单例模式的类是一个只需要被创建一次变量(这并不代表他被创建后是不可更改的),因此我们需要一个通用的方法来确定某个类是否被创建过,只需要通过一把锁去判断这个类是否被创建过即可。因此我们先推出一个通用的单例模式创建方式,代码如下:

<script type="text/javascript">
	// 我们把业务逻辑封装在fn里通过变量的形式传入
	function createSingle(fn){
		let lock = null
		// 我们用闭包把lock保存下来
		return function(){
			return lock || lock = fn.apply(this,arguments)
		}
	}
</script>

  当我们需要一个唯一的对象时,就自己写一个创建对象的函数,并把它交给单例模式处理

var createObj = function(a,b){
	return {
		a:a,
		b:b
	}
}
let singleObj = createSingle(createObj) //生成单例模式
console.log(singleObj('aaa','bbb')) //{a:'aaa',b:'bbb'}
console.log(singleObj('ccc','ddd')) //{a:'aaa',b:'bbb'}

  在JavaScript中我们经常用到单例模式,只是我们没注意到罢了,比如你创建一个a变量,然后你没有在后面的代码中重新创建a变量,我们就可以认为a是一个单例模式,只是我们不会这样去说罢了,所以我说学设计模式就是给你写的代码取个名字,实际上并没有什么软用。

猜你喜欢

转载自blog.csdn.net/dkr380205984/article/details/108601791