ゆうなんとかさんの雑記帳的な。

Twitterで踊ったり音ゲーしたりしてるあの名前がよくわからない人が書いてるらしいよ。

MVPとかMVVMとか

一昨昨日のつづきです。
MVCの話までした気がするのでさらにそこから続けます。

MVCモデルの問題。

MVCモデル、MVモデルの場合、Viewの見た目だけ変えるためロジックを置く場所に困ります。例えば、何かの商品の在庫を表示する画面で、在庫数に応じて色を変えるといったものですね。こういった「表示にだけ関するロジック」を置いておく場所を作ったのがPresentation Modelです。
f:id:yuu_xxxx:20130122224135p:plain
このパターンではドメインに関するロジックはModelに、表示に関するロジックはPresentation Modelに、という風に分離させることができます。ModelとViewが直接やり取りしないというのも特徴です。

もうひとつの解法がModel-View-Presenterモデルです。
f:id:yuu_xxxx:20130122224057p:plain
MVCにおけるControllerの役割はPresenterと一部はViewが担当します。ControllerがそのままPresenterに変わったわけではありません。PresenterとViewはViewが用意したインターフェースを通してアクセスするように実装します。このため、ViewとPresenterの依存度が下がります。

最後にMVVM

個人的にこれをメモしておきたかった感じです。いささか暴論ですが今までのはそれの前段階に過ぎません
Model-View-ViewModelモデルは、Presentation Modelモデルの派生形と考えられます。
f:id:yuu_xxxx:20130122225610p:plain
ViewとViewModelの間はバインディングすることで連携しますが、お互いの構造を知る必要はありません。むしろ知らないほうが望ましいとされています。ViewはModelと直接やり取りしないようになっています。ViewModelは何かというと、表示に関するロジックや状態を、Viewに依存しない形で実装します。また、ViewModelはModelへの操作をコマンドという形で提供します。

ひとまずやり切ったよー…