私はゲームの StateManager を書いています (私は C++ と SFML を使用していますが、これは OOP 言語に関する質問であるため、言語固有の要素を非表示にしようとしました)。StateManager が現在のアクティブな状態を更新するセットアップがあります。ただし、State はアクティブな状態を変更できる必要があるため (たとえば、メニューで [再生] を押すと PlayingState が開始されます)、State クラスで StateManager への参照を保持します。
わかりやすくするために、UML ダイアグラムを次に示します。
ご覧のとおり、StateManager と State はどちらも相互に参照しています。スパゲッティコードを回避するにはどうすればよいですか? StateManager をシングルトン クラスにする必要がありますか? ところで、ゲーム クラスはシングルトン クラスにする必要がありますか? これは簡単にできますが、自分のゲーム内の他のクラスがゲーム クラスや statemanager クラスにアクセスできるのはあまり好きではありません。たとえ私が唯一のプログラマーであってもです。