あるStateパターンの実装について

Graphics.moveTo(), Graphics.lineTo()の切り替えを、if分を使わずにStateパターンを使って実装するという話。

この二つの切り替えは確かに面倒なので、ここでStateパターンの使いどころとしてなるほど便利だなー、と思った。
しかし、この実装の仕方はちょっとおかしい。
IStateクラスというインターフェイスクラスを作り、それをMoveToStateクラスでimplements、そのMoveToStateクラスを派生させてLineToStateクラスでしているのだ。
なぜ派生させているのかというと、LineDrawerという管理クラスへの参照を持つために、純粋にメソッドだけ定義することができないからだ。その結果、MoveToState, LineToStateが同等でないクラス構成になり、とても気持ち悪く感じる。私は、Stateパターンでは、それぞれのStateがなるべく同等であるべきだと思うのです(もちろん例外はある)。

私が実装するなら

で、この実装の場合には基底クラスを作るべきだ、と思うのです。
つまり、以下のような基底クラスLineDrawBaseを作り、これをMoveToStateクラス、LineToStateクラスへと派生させればいいのだ。

public class LineDrawBase{
  protected var _drawer:LineDrawer;
  public function LineDrawBase( drawer:LineDrawer ){
    _drawer = drawer;
  }
  public function draw( x:Number, y:Number ) :void{
    // 派生クラスでoverrideする.
  }
}