Model-View-Presenterは、UIレベルでの動作とロジックの構造を定義するアーキテクチャパターンです。 M-V-Pは、バックエンドサービスとビジネスレイヤーとのやりとりなど、プレゼンテーションのロジックをボタンやインターフェイスコンポーネントを表示する仕組みから分離します。
パッシブビューは、Model-View-Presenterパターンのサブセットです。私たちは、その後、インタフェースからデータを収集し、おそらくいくつかのビジネスやデータ検証を行う、と考えフラットアーキテクチャで
UI – The User Interface reflects what is going on beneath it by implementing one or more View interfaces
Presenter – The Presenter receives interactions from the UI or Model and updates the Views it is attached to
Model – The model is a facade or black box in our diagram, behind which is a business logic layer and data layer
:外部から Basic Model view presenter diagram
は、パッシブ表示のためのアーキテクチャは、次のようになりますストアドプロシージャまたはインラインSQLを使用してデータベースに直接保存します。データアクセスレイヤー(またはエンティティーフレームワークのようなデータモデル)を定義することで、アプリケーションは、アプリケーションにとって意味があり、一貫して格納および取得される、まとまった定義済みのオブジェクトに対して操作することができます。ビジネスロジックレイヤーを定義することで、ビジネスと一貫性があり、アプリケーション内で一貫した方法でアプリケーション内のエンティティを操作するビジネスルールを集中化し、ビジネスフローを変更する際に発生するリスクを最小限に抑えることができます。エンドユーザーに伝達される情報とその入力に対する概念的な応答から、入力を投入し、UI上のボタン押下に応答するロジックを分離することにより、システムは、同一アプリケーション内の任意の数のインターフェースにわたってユーザーと一貫して対話することができる。
私のサンプルアプリケーションは、いくつかの機能と非機能要件があります。
Functional – Display product number, name, list price, and available quantity in tabular format
Functional – Provide a basic search input and button to search product names
Non-Functional – Implement an M-V-P pattern – Obviously the purpose of this whole exercise
Non-Functional – Use a simple model stack that can be easily replaced with a Service-Oriented one at a later time
Non-Functional – Build with the idea that we will later create a Silverlight or WPF front-end
Non-Functional – Make pretty pictures for article
私はプレゼンテーションモデルパターンは、パターンのMVVMグループではなく、MVPグループの一部であると思います。さらに、このパターンをWPFのようなバインディングを広範に使用するフレームワークで使用すると、MVPとの違いが少し明確になります。 –
@DavidOsborne Martin Fowlerによれば、それらは異なるパターンです。私はそれについて論争していない。しかし、プレゼンテーションモデルと(ビューとは対照的に)プレゼンテーションモデルとパッシブビューでの同期では、プレゼンテーションモデルに違いはありません。パッシブビューを使用して小規模なアプリケーションを作成し、プレゼンテーションモデルで同期してプレゼンテーションモデルを使用するように教えてもらえれば、私は同じ方法で書くでしょう... –
あなたはプレゼンターではありませんパッシブビューでは、ビューを操作する多くのコードが含まれていました。 MVVM View Modelでは、ビューモデルによって公開されるデータとビヘイビアにビューがバインドされるため、この種のコードはありません。 –