MVVMとMVPの違い
ソフトウェア開発の目的は、ユーザーやビジネスのニーズや問題に対処するソリューションを構築することです。これを実現するために、 Model-View-ViewModel(MVVM) と Model-View-Presenter(MVP) などの異なるテクノロジとアーキテクチャパターンが使用されます。
製造されているものと同様に、最初のステップは計画と設計段階です。ソフトウェア設計プロセスは、好ましいテクノロジツールセットに基づく仕様とすることができ、構想から計画、実装、更新、変更までのすべてのアクティビティを網羅することができます。
<! - 1 - >選択したアーキテクチャパターンに基づいて、低レベルおよび高レベルのアーキテクチャ設計をカバーし、再利用可能なソリューションを設計パターンを使用してマップします。
ソフトウェアアプリケーション構造
ソフトウェアアーキテクチャは、技術、運用、およびユーザーの要件を満たし、コードがどのように組織され管理されているかを参照するアプリケーション構造を定義します。
ソフトウェアアプリケーションのアーキテクチャを決定することは、すでに開発されているアプリケーションの容易で変更可能な部分ではないため、非常に重要です。したがって、プログラミングの開始前にアーキテクチャパターンを決定する必要があります。
<!アーキテクチャのパターンは、ハードウェアのパフォーマンスや制限、高可用性などのより多くの技術的問題に対処することで、パターンの幅が広範囲になるため、パターンを設計する方法とは多少異なります。異なるアーキテクチャーパターンの例は、MVC、MVVM、およびMVPです。一方、設計パターンは、再利用可能なオブジェクト指向開発を容易にし、アプリケーションのアーキテクチャよりも保守や変更が容易なフォーマル化されたベストプラクティスです。<!アーキテクチャパターン
Model View Controller(MVC)
は、Webアプリケーション用に開発された最初のアーキテクチャーパターンの1つで、90年代半ばから後半に、特にJavaコミュニティで人気を集めました。Django for PythonやRails(Ruby on Rails)などの新しいフレームワークは、迅速な展開に重点を置いているため、MVCはアーキテクチャパターンの大きな魅力として市場シェアを占めています。
従来、ユーザーインターフェイスの開発には複雑なロジックを処理するためのコードが多数含まれていたため、ユーザーインターフェイス(UI)レベルでコードを削減し、よりクリーンで管理しやすいアーキテクチャパターンが設計されていました。 MVCパターンでは、Webアプリケーションは
Model
(Data)
View
- (データを表示および操作するためのインターフェイス) Controller
- モデル
- はデータとビジネスロジックを処理し、 モデル
とコントローラ との間には または 表示 View は、サポートされているフォーマットおよび必要なレイアウトでユーザにデータを提示し、 コントローラ がユーザ要求(データをフェッチする)を受信すると、必要な関連リソース要求を完了する。 このパターンをオンライン書店の構築に適用しましょう。 ユーザーは書籍の検索、閲覧、登録、購入、プロフィールや書籍リストの管理ができます。ユーザーがSCI-FIカテゴリをクリックすると、関連するすべての書籍が利用可能と表示されます。
コントローラ は、書籍(リスト、追加、表示など)を管理するアクションを処理します。 1つのメイン コントローラ がトラフィックを指示する
コントローラ
が複数存在することがあります。
この例では、 コントローラ の名前はcontroller_booksです。 php、および Model (例えばmodel_books。php)は書籍に関連するデータとロジックを扱います。 最後に、オンラインカートに書籍を追加するときや、画像やレビュー付きの書籍の詳細を表示するときなど、さまざまな ビュー
が必要になります。 コントローラーブック。 php はメインのコントローラ (例えば
index。php )からアクション(ユーザ要求)を受け取ります。 コントローラーブック。 php
はリクエストを分析し、 model_booksを呼び出します。 SCI-FIの書籍のリストを返すためのPHP 999(データ)。 モデル の責任は、(検索フィルタを使用して)適用されたロジックを使用して、その情報を提供することです。 コントローラ は情報を取得し、関連する ビュー (検索ビュー、印刷ビュー、詳細ビューなど)に渡し、情報は 表示 >)を要求を開始したユーザーに送信します。 MVCパターン、モデルビュープレゼンター(MVP)、モデルビュービューモデル(MVVM)、階層モデルビューコントローラ(MVVM) MVPパターン
モデルビュープレゼンター(MVP) MVPパターン はしばらくありましたが、 MVCの変種です。自動化によってテストできるコードの量を増やすことを目的としたテストオートメーション用に特別に設計されたもので、プレゼンテーションレイヤーに関するいくつかの問題に対処し、UIからビジネスロジックを分離します。 画面はビューであり、表示されるデータはモデルであり、Presenterは2つを一緒にフックします。 MVP は、別々の責任を持つ次のコンポーネントで構成されています。 モデル (表示するデータを定義)
ビュー
(モデルからデータを表示し、プレゼンター)。
View
(ViewとModelの間で相互作用してそれらを一緒にフックする) View (Webページ)は、イベント(ユーザ要求)を
View
で開始された Presenter
- 発表者
- は、 表示
- を変更するために モデル
を読み込んで更新することによってこれらのイベントに応答し、したがって 発表者の 責任は モデル と ビュー をバインドします。
MVC パターンと MVP パターンを見た後、共通性はそれぞれのコンポーネントごとに別々の責任を持ち、 View (UI)と モデル (データ)。これらのパターンの大きな違いは、パターンがどのように実装されているかにより顕著です。 MVP は高度なソリューションに実装する複雑なパターンですが、シンプルなソリューションでは必ずしも適切な選択ではないかもしれませんが、うまく設計されたソリューションとして実装すれば大きなメリットがあります。 MVVMパターン MVVM
パターン は、Windows Presentation Foundation(WPF)およびMicrosoft Silverlightプラットフォーム用に特別に設計されたもので、すべての XAML [i] プラットフォームで使用されています。 WPFは、Windowsベースのプログラムでユーザーインターフェイスをレンダリングし、.NET Framework 3で初めてリリースされたMicrosoftシステムです。0 MVVM は MVC からこのパターンで洗練されました
View は、ビヘイビアー、イベント、およびデータバインディングでアクティブであり、
View
は
ViewModel と同期します(これによりプレゼンテーションと公開メソッドの分離が可能になります) MVVM は、 モデル (検証とビジネスロジックを持つデータを表します) MVC
は
モデル を管理し、 >ビュー(ビューは、ユーザーが画面上で見るものの構造、レイアウト、外観を定義する責任があります)理想的には、ビューはビジネスロジックを含まないコードビハインドが限定されたXAMLでのみ定義されます。モデルとViewModelをViewと同期させることを表示するために View と ViewModel の間をバインドする) ViewModel (Viewをth eモデルを作成し、データ(モデル)を操作するメソッドとコマンドを公開します。 View は、 ViewModel
から(データバインディングとメソッドを使用して)データを受け取り、実行時に View
- ViewModel
- 。 ViewModel は、 View と Model
- を仲介し、 View
ロジックを処理する。これは モデル - モデル からデータを取り出し、それを 表示 に表示して表示します。これらのコンポーネントはすべて互いに分離されており、他のコンポーネントに影響を与えることなく、独立して作業し、単体テストを分離し、交換することができます。この構造は、 Model と他のコンポーネントを独立して進化させ、開発者がソリューションのさまざまな側面を同時に処理できるようにします。たとえば、設計者が
View を使用している場合、他のコンポーネントへのアクセスを必要とせずにデータサンプルを生成するだけです。これにより、XAMLで View が実装されているため、ユーザーインターフェイスを簡単に再設計することができます。 MVP で前述したように、単純なソリューションでは、「Hello World!"どのパターンにも従うには基本的すぎる。しかし、より多くの機能、機能、およびコンポーネントが導入されると、アプリケーションの複雑さが増し、管理する必要があるコードの量も増えます。概要 ユーザーインターフェイスの開発が始まって以来、開発プロセスを容易にするためにデザインパターンが普及しており、アプリケーションのスケーラビリティが向上し、テストが容易になりました。 MVPパターンとMVVMパターンの相違点: MVP と MVVM の両方で、 View
はアプリケーション
> MVP では、 MVP と MVP の間に1対1のマッピングがあり、
View と ViewModel
の間に多対多があります。
MVP
は主にWindowsフォームとWindows Phoneアプリケーションで使用され、
- MVVM はSilverlight、WPF、ノックアウト/ AngularJSなどのために設計されています。