MVP と MVVM

MVP と MVVM の違いがよくわからなかったのですが、 調べているうちに違いがなんとなく分かった気がしたので、自分の理解での処理の流れ書いてみます。

MVP

2 種類ある

Passive View

  1. View で入力がある。
  2. View が入力があったことを知る。
  3. 受け取った入力に対する処理を Presenter へ委譲する。
  4. Presenter が処理を行い、 Model を操作する。
  5. Model の値に変更があれば、 その結果を View に渡す。

Supervising Controller

  1. View で入力がある。
  2. View が入力があったことを知る。
  3. 受け取った入力に対する処理を Presenter へ委譲する。
  4. Presenter が処理を行い、 Model を操作する。
  5. Model の値に変更があれば、その変更が View に反映される。

MVVC

  1. View で入力がある。
  2. View が入力があったことを知る。
  3. 受け取った入力に対する処理を ViewModel へ委譲する。
  4. ViewModel が処理を行い、 Model を操作する。
  5. ViewModel で Model の状態を保持しておき、変更があれば View に反映される。

違いは、 5 番目の処理の、 Model の変更をどうやって View へ知らせるかという部分だけ、というように理解しております。