はじめに
AdeventCalendar5日目です。
ちょっとボリューム少ないので休憩の片手間にでもどーぞ。
土日頑張るので許してください。
今回はiOSのMVPです。
MVPとは
画面処理とプレゼンテーションロジックを分離したアーキテクチャです。
主にModel,View,Presenterに分かれています。
Model
データを持ったりします。API叩いたりデータベースと繋いだりするのがここです。
MVCのModelと一緒です。
Presenter
ViewとModelの仲介をする。
その名の通りプレゼンテーションロジックを担当する。
例えばViewでボタンが押されたとしたらそれに応じてPresenterがModelからデータ持ってきてViewに返したりなど。
View
viewは画面表示を担当したりユーザーからのアクション(ボタン押したとか)をPresenterに伝えます。
viewControllerとかstoryboradとかがここに入ります。
2種類ある
どうやら2種類あるというのはフロー同期かオブザーバー同期かということらしいです。
フロー同期の方のMVPの流れ
フロー同期の方の流れは下の画像のような感じで
フロー同期の方だと毎回Presenterを通す必要はありますがViewが画面処理の実装しか必要なく、主な処理はPresenterに丸投げするためPresenterのテストとかがしやすくなるらしいです。
オブザーバー同期の方
オブザーバー同期だとModelのデータがアップデートされるとそれをViewに通知しView側でそのデータをよしなに使って表示し直すみたいな流れがあるのがフロー同期とは違う点です。
なのでデータの流れが追いやすいなどのメリットがあります。
最後に
今回はとりあえずMVPは細かく分けると2種類あるということとそれぞれメリットがあるので場合によって使い分ける必要があるということが知れました。
正直ざっくりしか書けていないので説明不足感はありますがもっと知りたい方は調べてみてください。色々奥が深いです。
明日か明後日にMVP使ったアプリの記事出すのでコードの方はそちらをみてイメージつかんでください。
まあちょっと忙しくて今日はそんなに質が高くありませんでした。次回に期待してください。
もっと言い訳したいのですが「※言い訳していいわけあるか」というダジャレが頭をよぎるので言い訳はこれくらいにしておきます。
※言い訳していいわけあるか・・・週刊少年ジャンプに連載していたあの日本が誇る超有名漫画NARUTO疾風伝575話で3代目土影オオノキがうちはマダラと戦っているときに口にしたセリフである。