ゲームロジックを構成するコンポーネントというかクラスと、設定メニューがあるとする。
設定メニューのとある項目を変更すると、ゲームロジックの方でちょっと変更があるケースを考える。例えばgameLogic.Reinit()
を実行する必要がある的な。
設定メニューのクラス内でgameLogic.Reinit()
を呼ぶというのは、設定メニューがゲームロジックに依存してる事になるが、これに微妙な気持ち悪さを感じている。
ゲームロジックは、DDDで言えばドメイン、クリーンアーキテクチャで言えばエンティティでアプリの中心だし、そこに依存が集まることは問題は無い、はずなのに。
逆に考えて、設定メニューの方にOnChangeFoo
の様なeventを作って、ゲームロジックからサブスクライブしてOnChangeFoo
eventが発火したらゲームロジック自身がthis.Reinit()
を実行する方が、なんかすっきり収まる様な気がしている。
けど、依存関係を見るとゲームロジックが設定メニュに依存する事になるので、DDDやクリーンアーキテクチャ等の考えからすると、ダメなはず。
webのbackendはレイヤー構造も中身も割とシンプルだから迷いにくいけど、こういうのはよく分からないなぁ。うーむ。