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

Shut the fuck up and write some code

グダグダ言わずにコードを書きたいブログ

Singletonを実装してみる。

デザインパターン第2弾。やっぱりAS2w

■Singleton クラス

class Singleton {
	
	private static var singleton:Singleton
	private var index:Number
	
	private function Singleton() {
		
		index = 0
		
	}
	
	public static function getInstance():Singleton {
		if (singleton == null) {
			trace("なかったらsingleton生成")
			singleton = new Singleton();
		}
		return singleton;
	}
	
	public function addIndex():Number {
		index++
		return index
	}
	
}

■実行

var testSingleton=Singleton.getInstance()
trace(testSingleton.addIndex())

var testSingleton2=Singleton.getInstance()
trace(testSingleton2.addIndex())

/**これはエラー*/
//var test3:Singleton=new Singleton 

var testSingleton4=Singleton.getInstance()
trace(testSingleton4.addIndex())

■出力

なかったらsingleton生成
1
2
3

肝はコンストラクタをprivateにしてクラス内でしか呼べないようにするのとgetInstanceを静的にしてクラスからしか呼べないようにすることでインスタンスを作れないようにする。便利だ便利だいう意見を聞きますがまだその便利さが実感できてないぞ!
AS3だとコンストラクタがPrivateにできないので変更の必要あり。