action scriptでテンプレートメソッド

デザインパターンとは、過去のソフトウェア開発者が見つけた設計のノウハウのことです。
デザインパターンウィキペディア
将棋、囲碁でいう定石のようなものですね。


テンプレートメソッドはデザインパターンの一つで、何度も使う処理をまとめたり、
初期化処理、計算処理などコードを読みにくくする複雑な処理を別クラスにまとめ、
ソースを読みやすくすることができます。


●テンプレートメソッドの実装
action script3.0では、インタフェースは変数定義ができないので使い勝手が悪いです。
このためクラスとオーバーライドを用いて、テンプレートメソッドを実装します。


●親クラス

package {
    import flash.events.MouseEvent;
    import flash.display.Sprite;	
    
    public class MouseClickBase extends Sprite{
        //描画、マウスハンドラ用
        private var child:Sprite;
        
        public function MouseClickBase():void
        {
            
            child = new Sprite();
            child.focusRect = false;
            //背景クリア
            child.graphics.beginFill(0xffffff);
            child.graphics.drawRect(0,0,720,540);
            child.graphics.endFill();
            addChild(child);
            
            //イベント追加
            child.addEventListener(MouseEvent.MOUSE_DOWN,mouseDownHandler);
        }
         
        //クリックしたところに赤のサークルを描く
        private function mouseDownHandler(evt:MouseEvent):void {
            child.graphics.beginFill(0xff0000);
            DrawInterFace();
            child.graphics.endFill();
        }
        
       	protected function DrawInterFace():void
    	{
    	}
    	
    	protected function CircleDraw():void
    	{
    		child.graphics.drawCircle(mouseX,mouseY,20);
    	}
    	
    	
    	protected function RectDraw():void
    	{
    		child.graphics.drawRect(mouseX,mouseY,10,10);
    	}
    }
}
            


●円を描く場合

package {
  
    
    public class MouseClickCircle extends MouseClickBase{
        public function MouseClickCircle():void
        {
            
        }
         
    	 protected override function DrawInterFace():void
    	 {
    	 	CircleDraw();
    	 }
    }
}

円を描くサンプル


●四角を描く場合

package {
  
    
    public class MouseClickRect extends MouseClickBase{
        public function MouseClickRect():void
        {
            
        }
         
    	 protected override function DrawInterFace():void
    	 {
    	 	RectDraw();
    	 }
    }
}
            

四角形を描くサンプル




MouseClickCircle、MouseClickRect、両者ともに余分なコードがなく非常に見やすいです。
また円、四角の書き換えも容易に行うことが出来るようになりました。