MVPアーキテクチャパターン
この記事では、我々はMVPパターンについて何かを見つけるだろう、それはMVCパターンから継承されています。 しかし、間違いなく、MVCパターンと比較するといくつかの変更があります。 そこで、MVCパターンとMVPパターンをどのように区別するか、それを使用する方法を理解します。
始めましょう。
- 分析問題
- MVPパターンの定義
- 使用するとき
- 利点&欠点
- ラップアップ
分析問題
MVPパターンが生まれた….. しかし、MVPは、MVCパターンのいくつかの欠点を防ぐために使用されます。
- MVCパターンでは、ビューとモデルは相互作用することができます。 そのため、通常、モデルからのデータを検証するか、ビューでデータロジックを使用します。 そのため、自動化された単体テストは困難になります。
- これは、セキュリティに関連しています。
MVVMパターンの定義
によるとwikipedia.com MVPパターンの定義は次のとおりです。
MVP pattern is a derivation of the Model-View-Controller (MVC) architectural pattern, and is used mostly for building user interfaces.In MVP, the presenter assumes the functionality of the middle-man.In MVP, all presetation logic is pushed to the presenter.
MVPパターンは、Apple、IBM、Hewlett-Packardの合弁会社であるTaligentで1990年代初頭に生まれました。以下は、MVPパターンの各部分の内容です。
-
モデルにはエンティティとサービスがあります。
エンティティは、他のいくつかの理由を利用するために、データベース内のテーブルとマッピングされたデータを格納するために使用されます。
サービスは、DAOパターン、またはリポジトリパターンを使用することができ、アプリケーション層とデータアクセス層の間の薄い層です。 彼らは通常、ローカルまたはリモートのデータベースでCRUD操作を管理します。
-
ビューには、ユーザーと対話する責任があります。
ロジックは含まれていません。 ユーザーの入力とコマンド(イベント)をプレゼンターにルーティングします。
ビューには通常、プレゼンターへの参照があります。P>
-
プレゼンターは、ビューとモデルの中間部分です。 MVCパターンのコントローラと同じ役割を果たします。
すべてのビジネスロジック、データロジック、入力の検証、ビューからイベントを受信し、ビューからモデルまたはモデルからビューへのデータの変換は、Presenterに実
MVCパターンのビューとコントローラと比較すると、MVPパターンに存在するビューとプレゼンターは互いに完全に分離され、インターフェイスを使用して通信し (プレゼンターは、ビューインターフェイスを介してビューと対話し、それはプレゼンターが使用されている実際のUI技術に依存することなく、すべてのプレゼンテー
使用するとき
-
私たちの画面には
bi-directional-flow
、それはユーザーの対話が私たちのモデルから何かを要求する必要があることを意味し、この -
モデルからの更新の影響を受けるビューは非常に限られています。
-
MVPパターンは、モデルでイベントが発生したときにUIを更新するように、UIがユーザーの操作なしで更新された場合には使用されません。
利点&欠点
- 利点
-
ビューはモデルと直接対話しません。 これにより、ビューの実装がMVCよりも分離され、プレゼンターとモデルの自動化された単体テストが容易になります。UIをWebからウィンドウまたはモバイルに変更する機能は非常に簡単です。
-
メンテナンスコストが低い
-
- 欠点
-
プレゼンターは、十分に注意しておらず、単一責任の原則に従ってコードを壊さないと、巨大な全知クラスに拡大する傾向があります。
-
複雑さが増しました。
-
余分な学習曲線。
-
MVPパターンに関連するいくつかのパターン
-
Application Controller
-プレゼンターがアプリケーションコントローラと対話する場合、プレゼンターはページフローと画面ナビゲーションロジックを必要としません。 これにより、ページフローの更新が容易になります。 -
Observer pattern
ラップアップ
-
エンドユーザーはビューとのみ対話します。
-
一つのビューは一つのプレゼンターにのみマップされます。
-
ビューはPresenterを参照していますが、Modelへの参照はありません。 また、発表者はそれに関連付けられたビューも認識しています。
-
パターンは、ビューとプレゼンターの間の双方向通信を提供します。
-
パッシブビューや監督コントローラなどのMVPパターンの他の二つの実装があります。
-
パッシブビューはプレゼンターによって完全に制御されます。 MVPパッシブビューを実装することで、並行性とマルチスレッドの処理がはるかに簡単になります。
-
Supervising Presenterでは、ビューはモデルと直接対話して、Presenterなしで宣言的に定義できる単純なデータバインディングを実行します。 プレゼンターはモデルを更新します。 宣言的に指定できない複雑なUIロジックが必要な場合にのみ、ビューの状態が変更されます。
-
パッシブビューなどのMVPの他のバリエーションと比較すると、監督プレゼンタパターンは、完全なテスト容易性よりも単純なコー Supervising Presenterパターンは、データバインディングを使用するため、他のMVPパターンよりも少ないコードを必要とします。 単純なUIの変更では、ビューを更新するためにプレゼンターでコードを変更する必要がないため、コードの保守が容易になります。ul>
-
-
ul:
https://www.linkedin.com/pulse/mvp-architecture-pattern-small-article-khaled-kassem/
Book Architectural Patterns_ Uncover essential patterns in the most indispensable realm of enterprise architecture
https://www.oreilly.com/library/view/architectural-patterns/9781787287495/38abcb95-0392-4127-a3fa-b80ac2807aa9.xhtml
The other idea about Presenter in MVP pattern and Controller in MVC pattern
http://hannesdorfmann.com/mosby/mvp/
Choose MVP pattern over MVC pattern
Why Do You Need to Choose MVP Over MVC Android Architectural Pattern?
Examples for MVP pattern
http://aviadezra.blogspot.com/2008/10/model-view-presenter-design-pattern.html
https://www.raywenderlich.com/7026-getting-started-with-mvp-model-view-presenter-on-android
https://www.linkedin.com/pulse/when-use-mvc-mvp-mvvm-nothing-ahmed-adel/
A Model View Presenter (MVP) implementation with ASP.NET
A brief introduction to a cleaner Android architecture: The MVP pattern
https://docs.microsoft.com/en-us/previous-versions/msp-n-p/ff649571(v=pandp.10)
Leave a Reply