読者です 読者をやめる 読者になる 読者になる

感謝のプログラミング 10000時間

たどり着いた結果(さき)は、感謝でした。

JavaScript シングルトンパターン

JavaScript
<スポンサーリンク>

1.基礎

シングルトンパターンは、作成されるクラスのインスタンスが1つのオブジェクトに制限されるもの。
シングルトンパターンの実装は、クラスのインスタンスが存在しなければ新規作成し、インスタンスが既存であれば単にそのオブジェクトへの参照を返すというものだ。

JavaScriptでのシングルトンは関数へのアクセスポイントをただ1つ提供するので、実装コードをグローバル名前空間から隔離する共通リソースの名前空間として働くことになる。

2.サンプル

var singletonExample = (function () {
	//シングルトンへの参照
	var instance;

	//private method
	function privateMethod() {
		console.log("hoge");
	}

	function init() {
		console.log("インスタンスを生成しました!");
		return {
			//public method
			sayMyName: function() {
				console.log("hello!" + myName);
			},

			setMyName: function(name) {
				console.log("name is setting");
				myName = name;
			},

			myName: "testSingleton"

		}
	};

	return {
		getInstance: function() {
			if (!instance) {
				instance = init();
			}

			return instance;
		}
	};
})();

console.log("singleton start!");

var client = singletonExample;
var singleA = client.getInstance();
var singleB = client.getInstance();


console.log(singleA === singleB); //true→つまり、同じオブジェクトを参照
singleA.setMyName("taro"); //Aにセットしたものは・・・

console.log(singleA.sayMyName()); //hello!taro 
console.log(singleB.sayMyName()); //hello!taro Bでも表示される

3.デモ

以下のように、ただひとつのオブジェクトを参照している。

singleton start! 
インスタンスを生成しました! 
true 
name is setting 
hello!taro 
undefined 
hello!taro
undefined 

4.参考

JavaScriptデザインパターン

JavaScriptデザインパターン

2013年に出た本。
JavaScriptGoFのパターンを解説するっていう珍しい本。