AS3でFactory

スーパークラス

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