MVPアーキテクチャパターン

システム開発

MVPアーキテクチャパターンは、Model-View-Presenterの略で、MVVMパターンに似ていますが、役割分担が少し異なります。主に以下の3つの要素から構成されています。

Model

  • アプリケーションのデータを表現する部分
  • データベースやAPIからデータを取得・保存する責務を持ちます
  • ビジネスロジックを含まない素のデータを扱います

View

  • ユーザーインターフェイスを表す部分
  • UIコンポーネントや画面レイアウトなどを含みます
  • Presenterにユーザー操作を通知する役割があります

Presenter

  • Viewの入力を処理し、Modelを使ってビジネスロジックを実行します
  • Modelのデータを加工して、Viewに表示するデータを提供します
  • MVVMのViewModelに相当する役割です

具体例として、タスク管理アプリケーションでMVPパターンを適用した場合を考えてみましょう。

Model

  • Task: タスクの詳細情報(タイトル、期限、説明など)を保持するクラス
  • TaskRepository: データベースやAPIとのデータのやり取りを行うクラス

View

  • TaskListView: タスク一覧を表示するUIの部分
  • TaskDetailView: 選択したタスクの詳細を表示するUIの部分

Presenter

  • TaskListPresenter: タスク一覧の表示ロジックを担当し、TaskListViewにデータを渡す
  • TaskDetailPresenter: タスク詳細の表示ロジックを担当し、TaskDetailViewにデータを渡す

ユーザーがTaskListViewでタスクを選択すると、TaskListViewはTaskListPresenterにその旨を通知します。すると、TaskListPresenterがTaskRepositoryからタスクデータを取得し、必要な情報を加工してTaskDetailPresenterに渡します。TaskDetailPresenterはその情報をTaskDetailViewへ渡して表示させます。

新規タスク作成時は、TaskDetailPresenterが新しいTaskインスタンスを作り、TaskRepositoryに保存を指示します。

このようにMVPパターンでは、Presenterが中心となってViewとModelの仲介役を務め、適切な役割分担を実現しています。ViewはUIロジックのみを担い、Presenterがユーザー操作に対する具体的な処理とビジネスロジックを実装することで、責務の分離とコードの保守性が高まる利点があります。

タイトルとURLをコピーしました