Javascriptのシングルトン
昨日で今年のバイトも終わりでした。会社の大掃除などして余った時間で考えてたけど、結構難しい。
結局は以下のサイトを参考にしました。↓
・JavaScriptのデザインパターン - Singleton
・SingletonをMixinする関数
Javaと比較してみます。
- Javaシングルトン
class Singleton(){
private static instance = new Singleton();
public static Singleton getInstance(){
return instance;
}
}
-
- 使用例
インスタンスをprivateフィールドに入れてただ一つのオブジェクト(シングルトン)を保障します。
Singleton obj =Singleton.getInstance();
- JavaScriptシングルトン
var singleton = function(SomeClass){
var NewClass = function(){
throw new Error("This is Singleton-Pattern Class. Use self.getInstance().");
};
NewClass.__instance__ = null;
NewClass.getInstance = function(){
if (this.__instance__ === null)
this.__instance__ = applyNew(SomeClass, arguments);
return this.__instance__;
};
function applyNew(cls, args){
var Tmp = function(){};
Tmp.prototype = cls.prototype;
var instance = new Tmp;
cls.apply(instance, args || []);
return instance;
};
return NewClass;
};
-
- 使用例
var Person = function(name, age){
this._name = name;
this._age = age;
};
Person.prototype = {
getName: function(){return this._name},
getAge: function(){return this._age}
};
Person = singleton();
var p1 = Person.getInstance();
シングルトンにしたいクラス(関数)内でオブジェクトをカプセル化するのではなくて、singleton関数にシングルトンにしたいクラス(関数)を渡して、クラスの生成と判定をしてシングルトンを保障しているっぽい。
- 作者: 結城浩
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2004/06/19
- メディア: 大型本
- 購入: 51人 クリック: 762回
- この商品を含むブログ (397件) を見る