【中級】MVVMの考え方


MVVMとは、アプリケーション・ソフトウェアを実装するためのデザインパターンの1つ。

初めに、以下の文章は 適当に調査・熟考して、こんな感じだと思われるというのを前提に、記載している為、正しい理解と異なる点もあると思われる。

MVVMの基本

MVVMの各モデルのイメージは、以下の様な感じとかんがえる。

M(Model) : ビジネスロジックの塊 = プログラムのメイン
V(View) : 画面(UI)
VM(VewModel) : ModelとViewの橋渡し

Viewの考え方

MVVMのViewを抑えるポイントは以下の3つ
・Viewの中は、UIに関係したロジックのみ。
・Behavior,trigger,actionによって、アプリケーションをリッチに動かす。
・ViewModelとのやり取りは、データバインディングが実現する。

Behaviorって何

ViewModelとやり取りをしない関数だと思う。画面上でアニメーションっちっくに動くUIとかを指す。

Trigger, Actionはセット

Triggerによって、特定のアクションが実行される。そして、アクションの結果をコールバックによりViewModelのインスタンス内のプロパティを変更する。

簡単なフローチャート
Trigger → Action → 何かすごいこと → Callback → ViewModelインスタンスの値が変化

データバインディングが実現すること

ViewModelの各プロパティの値を参照することが出来る。AngureJSとかわかりやすい。

ViewModeの考え方

よく分かりません!
・各要素ごとにViewModelを存在させても良い。
・コマンドによってViewを操作する。(TriggerとAction?)
・Modelのステートと変更の有無の取得
・Modelのメソッドを実行

要するに、View上で作ったインスタンスをいい感じに使って、Viewを操作しましょうって漢字だと思います。
操作するタイミングはModelのステートで決まり、View上でのTriggerとActionの結果発生するコールバックでModelのメソッドを呼んで実行するということだと思います。

Modelの考え方

・ドメインモデルで作る(トランザクションモデルは避ける)
・変更通知機能を保持する
・Modelの設計が一番大切

ざっくりとだが、MVVMの基本的な考えをまとめてみた。