#はじめに
この記事では、MVPモデルについて簡単にまとめました。
⚠️当方初学のため認識違いがある可能性大です
誤りを見つけた際はコメントにて指摘していただけると幸いです🙇♀️🙇♂️
#参考
この記事は、以下の情報を参考にして執筆しました。
- MVCから脱却したいのでMVPの勉強をした
- iOSアプリ設計パターン入門
- これまで自分が実装してきたMVPは中途半端だった
- [Backbone.jsにおけるModel-View-Presenterアーキテクチャパターン]
(https://dev.classmethod.jp/articles/backbonejs-mvp/)
#MVPモデルとは
(https://dev.classmethod.jp/articles/backbonejs-mvp/ から引用)
Presenter : Viewから移譲を受け、Modelに変更指示を送る。Modelからのコールバックを受けて,Viewを更新。
Model : 指示を受けて,自身を更新。
変更後,コールバックなどを行う。
View : 画面の描画担当。
また、MVPとMVCの違いは、MVCはオブザーバー同期に対して,MVPはフロー同期という点。
※なお、iOSアプリ設計パターンには、設計変更の動機,レイヤーの役割のどちらから見ても同じパターンだと考えてよいと書かれている。
#MVPの利点
- テストが比較的書きやすい
- protocolによって、レイヤー間の依存性を薄められる
- 小規模な開発にはちょうど良い場合が多い
- iOS開発に限って、ViewControllerから処理を減らせそう(MVC比較)
#Model
データ管理、またデータに関する操作および処理を定義。
Presenterから移譲された処理を実行(データの取得など)。
処理後、Presenterにコールバックを行う。
※iOS開発においては、import UIKitを書かない(UIを考慮しない)
#View
ユーザーが見る/操作する画面を表示。
Presenterにユーザから受けたイベントを移譲し、帰ってきた処理結果を表示。
データに影響を与える処理は一切書かない。
#Presenter
ModelとViewの仲介役。
Viewから受け取ったイベントをもとにModelに処理を移譲。
Modelの処理結果を受け取り、Viewに通知。
※iOS開発においては、import UIKitを書かない(UIを考慮しない)