Open1

依存のコントロール方法を完全に解説する

TaiyoTaiyo

依存とは

  • 依存とはなにか - ゲームオーバーダイアログとキャラクターのHP
  • ダイアログクラスによるポーリング vs キャラクタークラスによる命令 (関数呼び出し)
  • ダイアログクラスがコールバック関数かオブザーバー系の抽象クラスをキャラクタークラスに登録する
    • 依存関係はポーリングと同じだが、ポーリング特有の問題が一部解消できる
      • 状態が一瞬で変化したときに見落とす問題
      • 固定的な処理負荷がかかる問題
    • 可読性が落ちる、という見方はある
  • 依存の方向の決め方
    • 互いに依存するのは避ける
    • 直感的には
      • ゲームキャラクターのHPが0になったとき、キャラクターがダイアログシステムを呼び出す
      • 依存の方向はキャラクタークラス→ダイアログシステムクラス
    • クリーンアーキテクチャ的には
      • ゲームキャラクターのふるまいのほうがよりコアドメインに近い
      • ダイアログシステムがキャラクターのHPが0になったことを何らかの方法で確認し、ダイアログを出す
      • 依存の方向はダイアログシステムクラス→キャラクタークラス
  • ダイアログの「復活ボタン」を押したときにどう実装するべきか
    • 直感的な方向 ( キャラクター→ダイアログシステム)
      • ダイアログシステムが押したボタンを取得する関数を持つ。(または、ボタン入力をコールバック)
    • キャラクタークラスがダイアログクラスの情報を読み取る設計だと、依存が循環するため悪手気味