ステートをオブジェクトとして扱う必要あるか?
それならもうストラテジーやコマンド使って設計したほうが綺麗だと思う。

ていうかなんのコードだっけ?ゲーム?