3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

毎日何か成果物か学んだことを書くAdvent Calendar 2019

Day 5

今更MVP勉強したら2種類あると言われた。

Last updated at Posted at 2019-12-05

はじめに

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の流れ
フロー同期の方の流れは下の画像のような感じで
image.png
フロー同期の方だと毎回Presenterを通す必要はありますがViewが画面処理の実装しか必要なく、主な処理はPresenterに丸投げするためPresenterのテストとかがしやすくなるらしいです。
オブザーバー同期の方
オブザーバー同期だとModelのデータがアップデートされるとそれをViewに通知しView側でそのデータをよしなに使って表示し直すみたいな流れがあるのがフロー同期とは違う点です。
なのでデータの流れが追いやすいなどのメリットがあります。
image.png

最後に

今回はとりあえずMVPは細かく分けると2種類あるということとそれぞれメリットがあるので場合によって使い分ける必要があるということが知れました。
正直ざっくりしか書けていないので説明不足感はありますがもっと知りたい方は調べてみてください。色々奥が深いです。
明日か明後日にMVP使ったアプリの記事出すのでコードの方はそちらをみてイメージつかんでください。
まあちょっと忙しくて今日はそんなに質が高くありませんでした。次回に期待してください。
もっと言い訳したいのですが「※言い訳していいわけあるか」というダジャレが頭をよぎるので言い訳はこれくらいにしておきます。

※言い訳していいわけあるか・・・週刊少年ジャンプに連載していたあの日本が誇る超有名漫画NARUTO疾風伝575話で3代目土影オオノキがうちはマダラと戦っているときに口にしたセリフである。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?