scalaを用いたGoFパターン