シングルトンモードの定義は、「クラス」にインスタンスが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はシングルトンモードと考えることができますが、そんなことは言わないので、デザインパターンを学ぶことはコードに名前を付けることだと言っても、実際にはソフトな使い方はありません。