unity1week お題「あつめる」に参加しました
概要
Unity 1週間ゲームジャム 今週のお題「あつめる」
— naichi (@naichilab) July 7, 2019
開発期間終了しました〜。現時点での投稿数はちょうど 200 でした!すごい!
これから7日間は相互評価期間に入ります!いっぱい遊びましょう〜!https://t.co/2uhr9rdqDr #unity1week
今回はsolid原則を意識したコードと、zenjectの使い方習得にフォーカスを当てて参加しました。
作ったゲームはこちら。
依存性逆転の法則を適用してみる
依存性逆転の法則を適用していないコード
プレイヤーオブジェクトを動かすコードを書いてみます。
(ちょっとumlの線があってるか不安です..)
PlayerControllerというクラスを、処理の起点としました。
PlayerControllerはPlayerMoverクラスをメンバとして持ち、
PlayerMoverの処理を呼び出します。
PlayerControllerとPlayerMoverは別の名前空間に置きました。
(PlayerControllerはMono、PlayerMoverはPure)
処理の流れ・・・Mono→Pure
依存の向き・・・Mono→Pure
依存性逆転の法則を適用する
依存の向きをPure→Monoへ変更させてみます。
「抽象に依存させる」ために、interfaceを切って依存させてみました。
IPlayerMoverインターフェースを作りました。
PlayerControllerをIPlayerMoverインターフェースに依存させます。
IPlayerMoverインターフェースは、Monoに置きました。Pureに置いてしまうと、パッケージ間で見たときの依存の向きを逆転させられません。
IPlayerMoverの実装はPlayerMoverに任せました。
インターフェースに対してどの実装を使う?
今回はDIを使って解決しました。(zenject使った)