JavaのMVCアーキテクチャの初心者向けガイド

公開: 2018-04-10

Web開発シーンに関連している場合は、頭字語「MVC」に何百回も出くわしたことでしょう。 MVCは、今日のWebプログラミングの世界で最も話題になっているデザインパターンの1つであり、当然のことながらそうです。 この記事では、MVCアーキテクチャの世界を紹介します。 MVCの基本、その利点、そして最後に、JavaでのMVCの実装をより明確に理解するのに役立つ簡単なコードについて説明します。

目次

MVCアーキテクチャとは正確には何ですか?

その技術に入る前に、いくつかのことを明確にしましょう。MVCはデザインパターンではなく、アプリケーションを構造化する方法です。 近年、WebアプリケーションはMVCアーキテクチャを広く使用しているため、Webアプリケーション専用のデザインパターンと混同するのは当然です。 ただし、MVCが最初に記述されたのは1979年、つまりWebアプリケーションの概念がなかったWWW時代の前でした。 現在Webアプリケーションに使用されているアーキテクチャは、元のパターンを応用したものです。
実際、このアーキテクチャは当初、StrutsとRubyonRailsという2つの主要なWeb開発フレームワークに含まれていました。 これらの2つの環境は、後に登場したWebフレームワークの大部分への道を開きました。したがって、このアーキテクチャの人気は高まり続けました。

Swiggy、Quora、IMDBなどのアプリケーションの構築方法を学ぶ

MVCアーキテクチャパターンは基本的な考え方に従います。アプリケーションの責任を次の基準で分離する必要があります。

  • モデル:データとビジネスロジックを処理します。
  • 表示:要求されたときにいつでもデータをユーザーに表示します。
  • コントローラー:ユーザーの要求を楽しませ、必要なリソースを取得します。

各コンポーネントには、完全なモジュール性とともにアプリケーション全体のスムーズな機能を保証する、境界が定められた一連のタスクがあります。 これらの各コンポーネントをさらに詳しく見ていきましょう。

コントローラ

コントローラは、アプリケーションのハウスキーパーのようなものです。モデルとビューの間の調整を実行して、ユーザーの要求を楽しませます。 ユーザーリクエストは、HTTP getまたはpostリクエストとして受信されます。たとえば、ユーザーがGUI要素をクリックしてアクションを実行した場合などです。
コントローラの主な機能は、モデルを呼び出して調整し、動作に必要なリソースを取得することです。 通常、コントローラーはユーザー要求を受信すると、手元のタスクに適切なモデルを呼び出します。

モデル

モデルは、アプリケーションのデータにすぎません。 データは、保存、取得、編集が簡単な方法で「モデル化」されています。 モデルは、データにルールを適用する方法であり、最終的にはアプリケーションが管理する概念を表します。
どのソフトウェアアプリケーションでも、すべてが簡単に処理できるデータとしてモデル化されています。 ユーザー、本、またはアプリのメッセージとは何ですか? 実際には何もありません。特定のルールに従って処理する必要があるデータのみです。 同様に、日付は現在の日付より高くてはならず、電子メールは正しい形式である必要があり、名前は「x」文字を超えてはなりません。

ユーザーがコントローラーから要求を行うたびに、ユーザーが要求したもののデータ表現を返す適切なモデルに接続します。 このモデルは、ユーザーにどのように表示するかに関係なく、特定の作品で同じになります。 そのため、モデルデータをレンダリングするために使用可能なビューを選択できます。
さらに、モデルには、モデルのデータに変更があった場合に関連するコントローラーを更新するロジックも含まれています。

意見

名前が示すように、ビューはモデルから受信したデータをレンダリングする役割を果たします。 データを収めることができる事前に設計されたテンプレートが存在する場合があり、要件に応じてモデルごとにいくつかの異なるビューが存在する場合もあります。

すべてのWebアプリケーションは、これら3つのコアコンポーネントを念頭に置いて構成されています。 すべての要求を受信し、特定のアクションのために特定のコントローラーを呼び出す責任があるプライマリコントローラーが存在する場合があります。 例を使用して、MVCアーキテクチャでのWebアプリケーションの動作をよりよく理解しましょう。

例を見てみましょう

オンラインの文房具店を例にとってみましょう。 ユーザーは、アイテムの表示、購入、カートへのアイテムの追加、現在の注文へのアイテムの追加、さらにはアイテムの追加/削除(管理者の場合)を行うことができます。
次に、ユーザーが「ペン」というタイトルをクリックしてペンのリストを表示するとどうなるかを見てみましょう。
このアプリケーションには、ペンに関連するすべてのクエリを処理するための特定のコントローラーがあります。 「pens_controller.php」と呼ばれているとしましょう。 また、使用しているペンに関するデータを格納するモデルもあります。これを「pens_model.php」と呼びましょう。 最後に、データを表示するためのいくつかのビューがあります。ペンのリスト、ペンを表示するテーブル、リストを編集するためのページなどです。
次の図は、ユーザーが「ペン」をクリックしてから結果がユーザーの前に表示されるまでの完全な制御フローを示しています。

まず、「pens_controller.php」はユーザーリクエスト(1)をGETまたはPOSTリクエストとして処理します。 また、必要に応じて「pens_controller」を呼び出す中央コントローラーである「index.php」を使用することもできます。
次に、コントローラーは要求とパラメーターを調べて、必要なモデル(この場合は「pens_model.php」)を呼び出します。 コントローラは、使用可能なペンのリストを返すようにモデルに要求します(2)。
ここで、モデルはデータベースで必要な情報を検索し(3)、必要に応じてロジックを適用し、データをコントローラーに返します(4)。
次に、コントローラーは適切なビュー(5)を選択し、データ(6および7)を表示します。 リクエストがハンドヘルドデバイスからのものである場合は、それに適したビューが使用されます。ユーザーが特定のテーマを選択している場合は、そのビューが選択されます。
フルスタック開発者になる方法

MVCアーキテクチャの利点

最近アプリケーション開発者が直面する一般的な問題は、さまざまなタイプのデバイスのサポートです。 MVCアーキテクチャは、開発者がデバイスごとに異なるインターフェイスを作成でき、要求が行われたデバイスに基づいて、コントローラーが適切なビューを選択するため、この問題を解決します。 モデルは、使用されているデバイスに関係なく同じデータを送信します。これにより、すべてのデバイス間で完全な一貫性が保証されます。
MVCの分離により、ビューがビジネスロジックから美しく分離されます。 また、コードとワークフローを構造化しておくことで、大規模なアプリケーションの設計の複雑さを軽減します。 これにより、コード全体の保守、テスト、デバッグ、および再利用がはるかに簡単になります。

Javaを使用したMVCの簡単な実装

次の3つがあります。

    1. StudentObject:モデル。

    1. StudentView:クラスを表示してコンソールに詳細を出力します。

  1. StudentController:データをstudentObjectに格納し、それに応じてStudentViewを更新するコントローラー

ステップ1:モデルを作成する

パブリッククラスの学生{
   プライベート文字列rollNo ;
   プライベート文字列;
   
   public String getRollNo () {
      ロール返す;
   }
   
   public void setRollNo  String rollNo  {
      これ rollNo = rollNo ;
   }
   
   public String getName () {
      名前返す;
   }
   
   public void setName  String name  {
      これ 名前=名前;
   }
}

コードは自明です。 ロール番号と生徒の名前を取得/設定する機能で構成されています。 それを「student.java」と呼びましょう。
ステップ2:ビューを作成する

パブリッククラスStudentView {
   public void printStudentDetails  String studentName  String studentRollNo ){
      システム アウト println  "学生:" );
      システム アウト println  "名前:" + StudentName );
      システム アウト println  "ロール番号:" + studentRollNo );
   }
}

これは単に値をコンソールに出力するためのものです。 これを「studentView.java」と呼びましょう。
ステップ3:コントローラーを作成する

パブリッククラスStudentController {
   プライベート学生モデル;
   プライベートStudentViewビュー;
   public StudentController  Studentモデル StudentViewビュー){
      これ モデル=モデル;
      これ ビュー=ビュー;
   }
   public void setStudentName  String name ){
モデル setName  name );
   }
   public String getStudentName (){
      モデル返します getName ();
   }
   public void setStudentRollNo  String rollNo ){
モデル setRollNo  rollNo );
   }
   public String getStudentRollNo (){
      モデル返します getRollNo ();
   }
   public void updateView (){
ビュー printStudentDetails  model .getName  )、 model .getRollNo ()) ;
   }
}

これを「StudentController.java」と呼びます。 ざっと見ると、このコントローラーがモデルを呼び出してデータを取得/設定し、ビューを更新するだけであることがわかります。
それでは、これらすべてがどのように結びついているのかを見てみましょう。
ステップ4:メインJavaファイルを作成する

パブリッククラスMVCPatternDemo {
   public static void main  String [] args  {
      //データベースから彼のロール番号に基づいて学生レコードをフェッチします
      学生モデル= retriveStudentFromDatabase ();
      //ビューを作成します:コンソールに学生の詳細を書き込みます
      StudentViewビュー=新しいStudentView ();
      StudentControllerコントローラー=新しいStudentController モデルビュー);
コントローラー updateView ();
      //モデルデータを更新します
コントローラー setStudentName  "John" );
コントローラー updateView ();
   }
   private static Student retriveStudentFromDatabase (){
      学生学生=新入生() ;
学生 setName  "Robert" );
学生 setRollNo  "10" );
      帰国;
   }
}

これは「MVCPatternDemo.java」と呼ばれます。 ご覧のとおり、データベースまたは関数(この場合は関数を使用して値を設定しています)から学生データをフェッチし、それを学生モデルにプッシュします。 次に、前に作成したビューを初期化します。
さらに、コントローラーを初期化し、モデルとビューにバインドします。 updateView()メソッドは、コンソールで学生の詳細を更新するコントローラーの一部です。
ステップ5:結果をテストする
すべてがうまくいけば、結果は次のようになります。

 学生:
名前:ロバート
ロール番号:10
学生:
名前:ジョン
ロール番号:10

これを出力として取得した場合、おめでとうございます! 単純なアプリケーションではありますが、Javaを使用してMVCアーキテクチャを正常に実装しました。 どんなに単純でも、このアプリケーションはMVCアーキテクチャの力を実証するのに十分です。
知っておくべき15のSpringMVCインタビューの質問

まとめ…
多くのことを言ってやった後、最近のWeb/デスクトップアプリケーションでMVCアーキテクチャのパワーを強調するのは難しいです。 これにより、コードにまったく新しいレベルのモジュール性が提供され、コードがはるかに読みやすく、保守しやすくなります。 したがって、アプリケーション開発者としてのキャリアの中で新たな高みにスケールしたい場合は、MVCアーキテクチャとその動作を把握することが最優先事項である必要があります。

世界のトップ大学のソフトウェアエンジニアリングコースに登録します。 エグゼクティブPGプログラム、高度な証明書プログラム、または修士プログラムを取得して、キャリアを早急に進めましょう。

コメントに立ち寄って、この記事がどのように気に入ったかをお知らせください。

フルスタック開発者になる

UpGradとIIIT-ソフトウェア開発におけるバンガロアのPGディプロマ
ソフトウェアエンジニアリングの修士号を今すぐ申し込む