JavaRush /Java Blog /Random-JA /パート 7. MVC (Model-View-Controller) パターンの概要

パート 7. MVC (Model-View-Controller) パターンの概要

Random-JA グループに公開済み
この資料は「エンタープライズ開発入門」シリーズの一部です。以前の記事: パート 7. MVC (Model-View-Controller) パターンの概要 - 1この資料では、MVC などについて紹介します。MVC とは何かについて話し、その作成の歴史に触れ、MVC に固有の主なアイデアと概念を理解し、アプリケーションをモデル、ビュー、コントローラー モジュールに分割する方法を段階的に検討し、また、小規模な Web アプリケーションを作成する方法を段階的に検討してみましょう。 Spring-Boot と Spring-MVC を例として使用して、データが Java コードから HTML ページにどのように転送されるかを見てみましょう。このマテリアルを理解するには、デザイン パターン、特にオブザーバーとファサードに精通している必要があります。HTTP リクエストとレスポンスに精通し、HTML の基本を理解し、Java のアノテーションとは何かを理解してください。座って、お茶を入れ、デザート、サラダ、メインコース、最初のコースを準備します。始めます。

MVCの歴史

MVC のアイデアは、70 年代後半に Xerox PARC で働いていた Trygve Reenskaug によって策定されました。当時、コンピュータを使って仕事をすることは、学位を取得し、膨大な文書を絶えず勉強することなしには不可能でした。Reenskaug が非常に強力な開発者のグループと協力して解決した問題は、平均的なユーザーとコンピューターの対話を簡素化することでした。非常にシンプルで理解しやすい一方で、コンピューターと複雑なアプリケーションの管理を可能にするツールを作成する必要がありました。リーンスカウグは、アラン・ケイのリーダーシップの下、「あらゆる年齢の子供向け」ポータブル コンピューター Dynabook と SmallTalk 言語を開発したチームに取り組みました。フレンドリーなインターフェイスの概念がその場で定められました。Reenskaug 氏のチームとの取り組みは、IT 分野の発展に大きな影響を与えました。MVC とは直接関係ありませんが、これらの開発の重要性を示す興味深い事実を紹介しましょう。2007 年、Apple iPhone のプレゼンテーションの後、アラン ケイは次のように述べています。私はこう言いました。これは批判に値する最初のパーソナルコンピュータです。プレゼンテーションの後、スティーブ・ジョブズがやって来て、「iPhone は批判に値するのか?」と尋ねました。それで私は言いました、これを5×8インチにすれば世界を征服できるでしょう。」3 年後の 2010 年 1 月 27 日、Apple は 9.7 インチ iPad を発表しました。つまり、スティーブ・ジョブズはアラン・ケイのアドバイスにほぼ文字通り従ったのである。レンスカウグが取り組んだプロジェクトは 10 年間続きました。そして、MVC の作成者による MVC に関する最初の出版物は、さらに 10 年後に出版されました。ソフトウェア アーキテクチャに関する多数の書籍や記事の著者である Martin Fowler は、SmallTalk の実用バージョンから MVC を学んだと述べています。長い間、一次情報源から MVC に関する情報がなかったため、またその他の理由により、この概念については多数の異なる解釈が登場しました。その結果、多くの人は MVC を設計スキームまたはパターンであると考えています。それほど一般的ではありませんが、MVC は複合パターン、または複雑なアプリケーションを実装するために連携して機能するいくつかのパターンの組み合わせと呼ばれます。しかし、実際には、前に述べたように、MVC は主に、さまざまなパターンを使用してさまざまな方法で実装できる一連のアーキテクチャ上のアイデア/原則/アプローチです。次に、MVC の概念に組み込まれている主なアイデアを見ていきます。

MVC とは: 基本的な考え方と原則

  • VC は、ユーザー インターフェイスを備えた複雑な情報システムを構築するための一連のアーキテクチャ上のアイデアと原則です。
  • MVC は、Model-View-Controller の頭字語です。
免責事項: MVC はデザイン パターンではありません。MVC はまさに、ユーザー インターフェイスを備えた複雑なシステムを構築するための一連のアーキテクチャ上のアイデアと原則です。ただし、便宜上、「一連のアーキテクチャ上のアイデア...」を毎回繰り返さないように、MVC をパターンと呼びます。簡単なことから始めましょう。Model-View-Controllerという言葉の裏には何が隠されているのでしょうか?MVC パターンに従ってユーザー インターフェイスを備えたシステムを開発する場合、システムを 3 つのコンポーネントに分割する必要があります。これらは、モジュールまたはコンポーネントと呼ばれることもあります。言いたいことを言いますが、3で割ってください。各コンポーネントには独自の目的があります。 モデル。最初のコンポーネント/モジュールはいわゆるモデルです。これには、アプリケーションのすべてのビジネス ロジックが含まれています。 ビュー。システムの 2 番目の部分はビューです。このモジュールは、ユーザーにデータを表示する役割を果たします。ユーザーが見るものはすべてビューによって生成されます。 コントローラ。このチェーンの 3 番目のリンクはコントローラーです。ユーザー アクションの処理を担当するコードが格納されます (システム内のユーザー アクションはすべてコントローラーで処理されます)。モデルはシステムの最も独立した部分です。非常に独立しているため、View モジュールと Controller モジュールについては何も認識すべきではありません。モデルは非常に独立しているため、開発者はビューとコントローラーについて事実上何も知らない可能性があります。ビューの主な目的は、モデルからの情報を使いやすい形式で提供することです。ビューの主な制限は、いかなる方法でもモデルを変更してはいけないことです。コントローラーの主な目的は、ユーザーのアクションを処理することです。ユーザーがモデルに変更を加えるのは、コントローラーを通じてです。より正確には、モデルに保存されているデータに組み込まれます。講義ですでに示された図をもう一度示しましょう。 パート 7. MVC (Model-View-Controller) パターンの概要 - 2これらすべてから、完全に論理的な結論を導き出すことができます。複雑なシステムはモジュールに分割する必要があります。このような分離を達成するための手順を簡単に説明しましょう。

ステップ 1: アプリケーションのビジネス ロジックをユーザー インターフェイスから分離する

MVC の重要な考え方は、ユーザー インターフェイスを備えたアプリケーションは、大まかに 2 つのモジュールに分割できるということです。1 つはアプリケーションのビジネス ロジックの実装を担当するモジュール、もう 1 つはユーザー インターフェイスです。最初のモジュールは、アプリケーションの主な機能を実装します。このモジュールはシステムの中核となり、アプリケーション ドメイン モデルが実装されます。MVC の概念では、このモジュールは文字 M、つまり モデル。2 番目のモジュールは、ユーザーへのデータの表示やアプリケーションとユーザーの対話ロジックを含む、ユーザー インターフェイス全体を実装します。この分離の主な目的は、システムのコア (MVC 用語ではモデル) を独立して開発およびテストできるようにすることです。このような分割後のアプリケーション アーキテクチャは次のようになります。 パート 7. MVC (Model-View-Controller) パターンの概要 - 3

ステップ 2. Observer パターンを使用して、モデルのさらなる独立性とユーザー インターフェイスの同期を実現します。

ここでは 2 つの目標を追求します。
  1. モデルのさらなる独立性を実現します。
  2. ユーザーインターフェイスを同期します。
次の例は、ユーザー インターフェイスの同期の意味を理解するのに役立ちます。オンラインで映画のチケットを購入し、劇場の空席数を確認したとします。他の人が私たちと同時に映画のチケットを購入することもできます。この誰かが私たちより先にチケットを購入した場合、私たちのセッションに利用できる座席の数が減っていることを確認したいと思います。次に、これをプログラム内でどのように実装できるかを考えてみましょう。システム コア (モデル) とインターフェイス (購入する Web ページ) があると仮定しましょう。サイトでは2人のユーザーが同時に座席を選択します。最初のユーザーがチケットを購入しました。2 番目のユーザーは、この情報をページに表示する必要があります。これはどのようにして起こるのでしょうか? システム カーネルからインターフェイスを更新すると、カーネル、モデルはインターフェイスに依存します。モデルを開発およびテストするときは、インターフェイスを更新するためのさまざまな方法を念頭に置く必要があります。これを実現するには、Observer パターンを実装する必要があります。その助けを借りて、モデルは変更に関する通知をすべてのサブスクライバーに送信します。このようなサブスクライバであるインターフェイスは、通知と更新を受け取ります。オブザーバー パターンを使用すると、モデルは、一方では変更が発生したことをインターフェイス (ビューとコントローラー) に通知できますが、他方では実際にはそれらについて何も「知らない」ため、独立した状態を保つことができます。一方、これによりユーザー インターフェイスを同期できるようになります。

ステップ 3. インターフェースをビューとコントローラーに分割する

引き続きアプリケーションをモジュールに分割しますが、階層の下位レベルで分割します。このステップでは、ユーザー インターフェイス (ステップ 1 で別のモジュールに分割された) がビューとコントローラーに分割されます。ビューとコントローラーの間に厳密な線を引くのは困難です。ビューがユーザーに表示されるものであり、コントローラーがユーザーがシステムと対話するためのメカニズムであると言う場合、いくつかの矛盾があります。Web ページ上のボタンや電話画面上の仮想キーボードなどのコントロールは、基本的にコントローラの一部です。ただし、ユーザーにはビューの他の部分と同様に表示されます。ここでは機能分割について詳しく説明します。ユーザー インターフェイスの主なタスクは、ユーザーとシステムの対話を保証することです。これは、インターフェイスには 2 つの機能しかないことを意味します。
  • システムに関する情報をユーザーに表示し、便利に表示します。
  • ユーザーデータとコマンドをシステムに入力します(それらをシステムに送信します)。
これらの関数は、インターフェイスをモジュールに分割する方法を決定します。その結果、システム アーキテクチャは次のようになります。 パート 7. MVC (Model-View-Controller) パターンの概要 - 4つまり、Model、View、Controller という 3 つのモジュールのアプリケーションができました。要約する:
  1. MVC の原則に従って、システムをモジュールに分割する必要があります。
  2. 最も重要で独立したモジュールはモデルである必要があります。
  3. モデルはシステムの中核です。インターフェイスとは独立して開発およびテストできる能力が必要です。
  4. これを行うには、システム分離の最初のステップで、システムをモデルとインターフェイスに分割する必要があります。
  5. 次に、Observer パターンを使用して、モデルの独立性を強化し、ユーザー インターフェイスの同期を取得します。
  6. 3 番目のステップは、インターフェイスをコントローラーとビューに分割することです。
  7. ユーザーからシステムに情報を入力するために必要なのは、コントローラーに入力することだけです。
  8. システムからユーザーに情報を出力するものすべてが表示されます。
もう 1 つ重要な議論が残っているので、ココアを飲んでも構いません。

ビュー、コントローラー、モデルの関係について少し説明します。

ユーザーがコントローラーを介して情報を入力すると、モデルに変更が加えられます。少なくともユーザーはモデル データに変更を加えます。ユーザーがインターフェイス要素 (ビュー経由) を通じて情報を受け取ると、モデル データに関する情報を受け取ります。これはどうして起こるのでしょうか? ビューとコントローラーはモデルとどのように対話するのでしょうか? 結局のところ、View クラスが Model クラスのメソッドを直接使用してデータの読み取り/書き込みを行うことはできません。そうでない場合は、Model の独立性に疑問の余地はありません。モデルは、密接に相互接続されたクラスのセットを表しており、良い意味で、ビューもコントローラーもアクセスすべきではありません。ModelとView、Controllerを接続するには、Facadeデザインパターンを実装する必要があります。モデル ファサードは、モデルとインターフェイスの間のまさにレイヤーになります。ビューはこのレイヤーを通じて便利な形式でデータを受け取り、コントローラーは必要なファサード メソッドを呼び出してデータを変更します。概略的には、最終的には次のようになります。 パート 7. MVC (Model-View-Controller) パターンの概要 - 6

MVC: メリットは何ですか?

MVC 原則に従う主な目的は、アプリケーションのビジネス ロジック (モデル) の実装をその視覚化 (ビュー) から分離することです。この分離により、コードの再利用が増加します。MVC を使用する利点は、ユーザーが同じデータを異なる形式で提供する必要がある場合に最も顕著になります。たとえば、表、グラフ、またはチャートの形式 (さまざまなタイプを使用)。同時に、ビューの実装に影響を与えることなく、ユーザーのアクション (ボタンのクリック、データの入力) に対する反応を変更できます。MVC の原則に従えば、プログラムの作成が簡素化され、コードの可読性が向上し、将来のシステムの拡張と保守が容易になります。「エンタープライズ開発入門」シリーズの最後の資料では、例として Spring-MVC を使用した MVC の実装を見ていきます。 パート 8. spring-boot で小さなアプリケーションを作成する
コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION