#はじめに
前回に続き、MVVMを学習しておりますが、なかなか掴めません、、、
今回はiOSアプリ設計パターン入門のMVVM(第7章)を読んで学んだことを自分なりにまとめていこうかと思います!
#MVVMアーキテクチャ
画面の描画処理とプレゼンテーションロジックとを分離したGUIアーキテクチャ
画面の描画処理をView、画面描画のロジックをViewModelにする
ViewとViewModelをデータバインディングで関連付けてViewModelの状態が変更されたらそれに同期してViewの状態も更新され、画面に反映されるのが特徴
###データバインディング
二つのデータの状態を監視し、同期する仕組み
MVVMではViewがViewModelを監視する単方向バインディング
データバインディングによってViewModel内にViewに対する描画処理を書く必要がなくなる
->疎結合!!!
###採用する理由
リアクティブプログラミングと相性がいいため
###Model
MVCなどと同じ
APIやデータベースへのアクセスなど
###View
MVCなどと同じ
ViewModelが保持する状態とデータバインディングしてユーザーの入力に応じてViewModelが自身が保持するデータを加工、更新することでバインディングした画面表示を更新する
###ViewModel
Viewに表示するためのデータを保持する
Viewからイベントを受け取り、Modelの処理を呼び出す
Viewからイベントを受け取り、加工して値を更新する
ViewModelはViewの参照を保持しない
#おわりに
次回
MVVMをもっともっと勉強していこうかと思います!