【Swift】MVPを簡単にまとめてみる
はじめに
今回は、MVPアーキテクチャについて簡単にまとめていきたいと思います。
MVPとは
特徴
・Model, View, Presenterにより分割されるGUIアーキテクチャ
・データ同期する方法に、PassiveViewとSupervisingControllerの二つがある
フロー同期とオブザーバー同期
まず、PassiveViewとSupervisingControllerを理解する前に、フロー同期とオブザーバー同期の説明をします。
フロー同期
上位モジュールのデータを下位モジュールに適宜セットして同期する同期方法
つまり、手続き的な同期方法。
メリット
・画面遷移間でデータの受け渡しなどでデータフローを追いやすい
→上位モジュール(遷移先)が下位モジュール(遷移元)の参照を持つことができるため、有効
デメリット
・共通したデータを参照しているすべての箇所の参照を持っておかなければいけなくなるので、参照の管理が煩雑になりやすい。
オブザーバー同期
下位モジュール(監視元)が上位モジュール(監視先)からObserverパターンを使い送られてくるイベントを受け取ってデータを同期させる同期方法。
つまり、宣言的な同期方法である。
メリット
・共通した監視先を持つ複数の箇所でデータ同期をしやすい
・上位モジュールが下位モジュールの参照をもつ必要がなく、かつコンポーネント間の距離に関係なくデータ同期ができる。(互いに疎結合)
デメリット
・データ変更のたびに同期処理が実行されるため、いつデータ同期が行われるのかが追いづらい。
Model
MVC, MVVMなどもModelと同じ。
View
View+ViewController
Presenter
ViewとModelの仲介役
プレゼンテーションロジックを担う
1Viewにつき、1Presenter作成することが多い
PresenterからはViewをweak参照することが多い
PassiveView
Presenter→Viewでフロー同期を使う
myNameLabel.text = "REON"
tableView.reloadData()
Viewはすべてのユーザー入力イベントをPresenterに渡す。Presenterは入力に応じてプレゼンテーションロジックを処理して、Viewに対して手続き的な描画処理を出す。
ViewはPresenterの指示によってのみ描画処理を行い、Viewを基準とした描画処理は行わない。
SupervisingController
フロー同期とオブザーバー同期の両方を使う
Presenter→View間をフロー同期
Model→View間をオブザーバー同期する
監視元であるViewが監視先であるModelからNotificationCenterなどで送られるイベントを受け取って描画処理を行うことが例として挙げられる。
Viewは簡単なプレゼンテーションロジックを持つ。
Presenterは複雑なプレゼンテーションロジックを持つ。
ModelはPresenterによって呼び出され、Viewに対して描画に必要なデータをイベント通知によって受け渡しする。
SupervisingControllerはModel→View間にオブザーバーパターン同期を用いることで、処理を簡潔にかける。
おわりに
MVPはPassiveViewかSupervisingControllerのどちらを使うのかがミソですね。
Author And Source
この問題について(【Swift】MVPを簡単にまとめてみる), 我々は、より多くの情報をここで見つけました https://qiita.com/REON/items/ed97524867044956aebf著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .