package{ import flash.display.DisplayObject; import flash.display.Sprite; public class Factory extends Sprite { public function Factory() { var c:DisplayObject = getDisplay(); c.x = 100; addChild(c); } public function getDisplay():DisplayObject { throw new Error(); } } }
サブクラス
package{ import flash.display.DisplayObject; import flash.display.Sprite; public class subclass extends Factory { override public function getDisplay():DisplayObject { return new Sprite(); } } }
こっちではSpriteオブジェクトを生成する。
サブクラス2
package{ import flash.display.DisplayObject; import flash.display.Bitmap; public class subclass2 extends Factory { override public function getDisplay():DisplayObject { return new Bitmap(); } } }
こっちではBitmapオブジェクトを生成する。
package{ import flash.display.Sprite; public function Main extends Sprite { public function Main() { var s:subclass = new subclass(); addChild(d); var s2:subclass2 = new subclass2(); addChild(s2); } } }
スーパークラスで共通の処理を抽象化しておいて、
サブクラスで目的別に必要な処理を書く。
使い方としては、
上のように各サブクラスからオブジェクトを生成する。
共通の処理をひとつ用意しておいて、
詳細な実装をサブクラスでおこなう、という感じ。
以下参考。というかそのまんま。
http://www40.atwiki.jp/spellbound/pages/1287.html