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

Shut the fuck up and write some code

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

AdapterをAS2で実装してみる。

だんだんデザインパターンが面白くなってきた。今日はAdapter。


■使いたい元クラス Taget.as

class Target {
	
	public function testcall():String {
		var str:String="テストで呼ばれた。"
		return str
	}

}


■Adapter継承版用インターフェース AdapterInterface.as

interface AdapterInterface {
	
	public function call():String
	
}


■Adapter継承版 AdapterClass.as

class AdapterClass extends Target implements AdapterInterface {
	
	public function AdapterClass() {}
	
	public function call():String { 
		var str:String = "継承版:" + testcall()
		return str
	}
	
}


■Adapter委譲版 AdapterClass.as

class AdapterDelegate {
	
	private static var test:Target = new Target();	
	
	public function AdapterDelegate() {}
	
	public function call() :String {
		var str:String = "委譲版:" + test.testcall()
		return str
	}
	
}


■実行

/*委譲版*/
var test1:AdapterDelegate = new AdapterDelegate()

/*継承版*/
var test2:AdapterClass = new AdapterClass()

trace(test1.call())
trace(test2.call())


■結果

委譲版:テストで呼ばれた。
継承版:テストで呼ばれた。


委譲版は使いたいクラスのインスタンスを作って、それを元にする。
継承版はインターフェースを容易してその中に使いたいクラスのメソッドをオーバーライドする。

途中出し訳確認するために余計なstringをつけてるのであんまりAdapterしてる感じがしないのは勘弁してください。