Model
アプリケーションで使うデータの基本的な振る舞いやそれに関するロジックを保持
具体的には、
- データ構造の表現
- Web APIとのやりとり
- ローカルデータベースなどへの保存
ViewModel
- ModelとView、ViewController層の仲介役
- Modelからデータを受け取り、それらをUIに反映できるような形で出力
- View、ViewControllerからユーザーのアクション情報を受け取り、Modelに伝え、Modelからデータを受け取りUIに反映できるような形で出力
View、ViewController
View
- UIの表示
- データを表示するようなUIの場合、Controllerからデータを受け取り、UIに反映
- ユーザーインタラクションの認知し、必要に応じてUIを更新する。
- もしくは、そのユーザーインタラクションをした結果、何かアクションをしたいとき、ユーザーインタラクションの情報をControllerに伝達する。
- View層はデータ構造に関する一切のロジックを保持しない。
ViewController
- ViewとViewModelの仲介役を行う。
- ViewModelから受け取った出力をViewに反映させてUIを更新
- ユーザーのアクションをViewModelに伝え、ViewModelから新しい出力を受け取り、Viewに反映させてUIを更新