MVP と MVVM
MVP と MVVM の違いがよくわからなかったのですが、 調べているうちに違いがなんとなく分かった気がしたので、自分の理解での処理の流れ書いてみます。
MVP
2 種類ある
Passive View
- View で入力がある。
- View が入力があったことを知る。
- 受け取った入力に対する処理を Presenter へ委譲する。
- Presenter が処理を行い、 Model を操作する。
- Model の値に変更があれば、 その結果を View に渡す。
Supervising Controller
- View で入力がある。
- View が入力があったことを知る。
- 受け取った入力に対する処理を Presenter へ委譲する。
- Presenter が処理を行い、 Model を操作する。
- Model の値に変更があれば、その変更が View に反映される。
MVVC
- View で入力がある。
- View が入力があったことを知る。
- 受け取った入力に対する処理を ViewModel へ委譲する。
- ViewModel が処理を行い、 Model を操作する。
- ViewModel で Model の状態を保持しておき、変更があれば View に反映される。
違いは、 5 番目の処理の、 Model の変更をどうやって View へ知らせるかという部分だけ、というように理解しております。