unapply を使って各コマンドのケースクラスがパース機能を備えて良いかも

object MoveCommand {
  def unapply(args: List[String]) = {
    // TODO: ここでがんばってパース
    Some((point, directiong)) // or Some(MoveCommand(point, directiong))
  }
}

c.f. http://www.ne.jp/asahi/hishidama/home/tech/scala/object.html#h_unapply