MVPとかMVVMとか
一昨昨日のつづきです。
MVCの話までした気がするのでさらにそこから続けます。
MVCモデルの問題。
MVCモデル、MVモデルの場合、Viewの見た目だけ変えるためロジックを置く場所に困ります。例えば、何かの商品の在庫を表示する画面で、在庫数に応じて色を変えるといったものですね。こういった「表示にだけ関するロジック」を置いておく場所を作ったのがPresentation Modelです。
このパターンではドメインに関するロジックはModelに、表示に関するロジックはPresentation Modelに、という風に分離させることができます。ModelとViewが直接やり取りしないというのも特徴です。
もうひとつの解法がModel-View-Presenterモデルです。
MVCにおけるControllerの役割はPresenterと一部はViewが担当します。ControllerがそのままPresenterに変わったわけではありません。PresenterとViewはViewが用意したインターフェースを通してアクセスするように実装します。このため、ViewとPresenterの依存度が下がります。
最後にMVVM
個人的にこれをメモしておきたかった感じです。いささか暴論ですが今までのはそれの前段階に過ぎません
Model-View-ViewModelモデルは、Presentation Modelモデルの派生形と考えられます。
ViewとViewModelの間はバインディングすることで連携しますが、お互いの構造を知る必要はありません。むしろ知らないほうが望ましいとされています。ViewはModelと直接やり取りしないようになっています。ViewModelは何かというと、表示に関するロジックや状態を、Viewに依存しない形で実装します。また、ViewModelはModelへの操作をコマンドという形で提供します。
ひとまずやり切ったよー…