« 話題のなの | メイン | blogデザインのデザイン »

ActionScript 2.0でデザインパターン(Singletonの巻き)

おつぎは、Singleton。インスタンスが作成されるのを一個のみにしたい時に使用するパターンですよ、と参考書には書いてありました。仕組み的には、コンストラクタをprivateにしてnew できないようにしちゃうパターンです。ま、作り方はあんま難しくないです。覚えておいて損はないでしょう。

確かに、絶対に一個しかインスタンスがないようにとプログラム的に制限してしまえば便利な場面もあるかも。ほかのインスタンスをコントロールするためのインスタンスとか。複数あると混乱しちゃうインスタンスとか。

ストーリー的には唯一無比のオリジナリティーを追求しているカリスマが俺についてこいみたいな勢いで仁王立ちしてる感じ?

ていうか、よけいわかんなくなった。

new できないのにインスタンスはあるってのが変な感じだけど、まあ、そんなもんなんでしょう。

以下ソース。

// Singleton.as
class Singleton {
	private static var singleton = new Singleton();
	// 自分からしかアクセスできないコンストラクタ。すなわちnew できない。
	private function Singleton (){
	}
	static function getInstance():Singleton{
		return new singleton;
	}
}
//Main.as
class Main{
// メインクラス
	function Main(path :MovieClip ) {
		var tmp = "Start .¥n";
		var obj1 = Singleton.getInstance();
		var obj2 = Singleton.getInstance();
		// var obj3 =new Singleton(); こう書くとエラーになる。
		if ( obj1 == obj2 ){
			tmp = tmp+"obj1とobj2は同じインスタンスです。¥n";
		} else {
			tmp =  tmp+ "obj1とobj2は違うインスタンスです。¥n";
			// 表示されない
		}
		tmp =  tmp+ "end.";
		// 表示
		path.createTextField("tf", 1, 5, 5, 190, 190);
		path.tf.border = true;
		path.tf.multiline= true;
		path.tf.wordWrap= true;
		path.tf.text = tmp;
	}
static function main() {
	var t :Main= new Main(_root);
	}
}

でわ。

トラックバック

このエントリーのトラックバックURL:
http://www.minfish.jp/blog/mt-tb.cgi/8