普通にstateパターン使えば解決する。