MVVMパターンをザックリ活用
はじめに
本記事はデザインパターン・プログラム設計を完全に理解していなくとも、近しいプログラム構造をイメージすることで簡潔な設計を目指す。
知識の導入によるリスクを避け、リターンのみを求める、ローリスクハイリターンを目指す記事である。
厳密にデザインパターンをなぞらえようとすると、慣れていない記述に合わせるために、書かなくてよかった中間コードが増える場合がある。
基礎知識だけで近しいものを実現したい。
意訳
本記事はMVVMモドキです。
Player.csに代表される大味なコーディングを許容していこう。
MVVMパターンとは
Model = データ
ViewModel = データと見た目のやり取り
View = 見た目に関するもの = UIや場面上のオブジェクト
MVVMをUnityで活用するザックリとした理解
Model
= MonoBehaviourを継承せずに定義したclass
ViewModel
= MonoBehaviourを継承したclass
Player.csなどと言った大枠で作られることが多い。Modelにあたるデータを生成して所持することが多い。
View
= MonoBehaviourを継承したclassあるいはObjectを継承したclassと言ってもいいかもしれない。
Unityの標準コンポーネントとして実装されたものを考えるとイメージしやすい。
TextクラスやTransformだったりと見た目に直接関わる。
ここまでで、
Modelがデータの更新
ViewModelがModelクラスを持つ
ViewがViewModelに更新を求める
View -> ViewModel -> Model の単方向の流れになっています。
また、ViewModel 1 -- 多 Modelの想像もしやすいと思います。
PlayerがStatus[]を持っていたりScoreを持っていたりします。
単方向と1 -- 多 の原則はデータ構造を考えるうえでとても楽になります。
おわりに
もちろん、プロジェクトごとに設計は異なります。
最適な構造を選択すると変声箇所が少なく済んだりします。
しかし、僕は楽に設計が浮かぶことの方が大事だと思っています。
導入されたコスト低めで出来るだけ保守性高くを目指していきたい。