21
Model View Presenter for Android

Model View Presenter for Android

Embed Size (px)

Citation preview

Model View Presenter for

Android

自己紹介

釘宮 愼之介 / @kgmyshin

自己紹介

Androidエンジニア !

福岡県出身 !5月からフリーランスか転職か

勉強会(ダンジョン)に出会いを求めるのは間違っているだろうか

ところで、 特に去年くらいから

MVPって 聞きませんか?

そもそもMVPとは?

基本的にはMVCなんだけど、 違いとしては

Viewがユーザからのイベントを 一切処理せずに

全てPresenterに移譲して ModelにはPresenterからアクセスする

というのがある

ドメイン層

プレゼンテーション層

Presenter

Model

View

タッチなどのイベント

移譲

然るべき Modelのinterfaceをcall

ModelからのfeedbackはObserverPatterを用いて、View or Presenterへ通知するか

呼び出したPresenterにCallbackで返却するかのどちらでも良いと思う。

セオリーは前者だけど、githubのソースとか見ると後者の方が多い感じ。

return

return値をもとに

Viewを操作

なぜ今 MVPなのか?

AndroidでMVCを 適用する際の問題点

Activity (Fragment)を Controllerか

Viewか 奇麗に分けきれない

ControllerなのかViewなのかで

たまに言い争ってるのを みかけることもしばしば。

android best practicesでも activityとfragmentって Controllerでもあるし

Viewでもあるよねって言ってる。

https://github.com/futurice/android-best-practices

多重責務

でも MVPで設計すれば この問題は解消される

なぜなら、 Activityから

Controller足り得る要素を 完全に抜き取って

Viewにすることができるから

ドメイン層

プレゼンテーション層

Controller

Model

View

タッチなどのイベント

Activityが この位置に居るので Model関連の処理を

Activityに書く事になる

Model View Controller

Activity

ドメイン層

プレゼンテーション層

Presenter

Model

View

タッチなどのイベント

Activityが この位置に居るので Modelと疎になり 書くべき事が減る

移譲

Model View Presenter

Activity

MVPを用いる事で Activity(Fragment)は 明確にViewになる

まとめ

・ その結果、Activityが煩雑になりづらくなる