「こんにちは、アミーゴ!」

「こんにちは、ビラーボ!」

「あなたはすでに優秀なプログラマーです。それでは、今日は MVC についてのレッスンを行います。」

「MVC は、モデルビューコントローラーの略です。これは、アプリケーションが 3 つの部分に分割される、大規模なアプリケーション向けのアーキテクチャ設計パターンです。」

「最初の部分には、アプリケーションのすべてのビジネス ロジックが含まれています。この部分はモデルと呼ばれます。この部分には、アプリケーションが実行するために作成されたすべてのことを実行するコードが含まれています。この部分は、他の部分への依存度が最も低くなります。」

「2 番目の部分には、ユーザーへのデータの表示に関するすべてが含まれています。この部分はビューと呼ばれます。これには、ウィンドウ、ページ、メッセージなどの表示を制御するコードが含まれています。」

「3 番目の部分には、ユーザー アクションを処理するコードが含まれています。モデルの変更を目的としたユーザー アクションはすべてここで処理されます。この部分はコントローラーと呼ばれます  

「このアプローチでは、プログラムのロジック (モデル)プログラムのデータをユーザーに表示するメカニズム (ビュー)ユーザー入力/アクションのハンドラー (コントローラー) の3 つを独立して作成できます 。」

「アプリケーションには複数のビューがあることがよくあります。これは正常です。Excel ではまったく同じデータを数値と図の両方で表示できます。ゲームでは、一人称視点、三人称視点、マップ ビューなど、さまざまなビューからイベントを表示できます。これらはすべて、単一のモデルの異なるビューです。」

「ユーザーのアクションに応じてモデルの何を変更するかを決定するコードはすべて、 Controller に集められますたとえば、ユーザーがプログラムを閉じることにした場合は、モデルのデータをディスク上のファイルに保存する必要があります。または、ユーザーが新しいデータを入力した場合は、それをモデルに追加する必要があります。その後、モデルはデータの変更についてすべてのビューに通知するため、データの現在の状態のみが表示されます。

「もう一度言ってください。」

「Java 開発者の観点からは、モデル、ビュー、コントローラーは次の 3 つのクラスのグループであると言えます。」

a) 各部分には独自の目的があります。」

b) 単一グループのクラス間の関係は非常に強い。」

c) グループ間の関係が非常に弱い。」

d) 部品が相互に通信する方法は厳しく規制されています。」

「そして、これをイメージする別の方法は次のとおりです。

MVC-1

「モデルはシステムの最も独立した部分です。モデルはビューやコントローラーに依存しません。モデルはビューまたはコントローラー グループのクラスを使用できません(!)。」

「ビューの主な制限は、モデルを変更できないことです。ビュー クラスはデータのモデルにアクセスしたり、イベントをサブスクライブしたりできますが、ビュー クラスはモデルを変更できません。」

「コントローラーの主な制限は、データが表示されないことです。コントローラーはユーザーのアクションを処理し、それに応じてモデルを変更します。」

「でも、なぜこれが必要なのでしょうか?」

「今これを使っていないということは、近い将来も使わなくなるということではありません。あなたは仕事を得るためにここで勉強しています。そして、たとえこの知識が将来役立つことが証明されなかったとしても、勉強はもちろん、仕事にも必ず役立ちます。」

「結局のところ、実際のプロジェクトとインタビューはまだあなたを待っています...」

「私たちは今ここで一緒に話をしていますが、おそらく1か月後にはあなたはすでに働いているでしょう。」

「まったくその通りです、ビラーボ。あなたの言うことをよく聞きます。」

「MVC パターンは、アプリケーション アーキテクチャでは非常に一般的です。その方が便利だからと言って、突然ビュー クラスをモデルに追加し始めないように、それを理解しておく必要があります。」

「どんなプロジェクトでも最も重要なことはそのアーキテクチャです。 この段階でのあなたの仕事は、良いアーキテクチャを作成できるようになることよりも、他の人のアーキテクチャを理解することを学ぶことです。あなたはまだ成長する必要があります。自分の作品を作成するまでに数年かかります。しかし、他の人が作成したものを理解する必要があります。すぐにでも。」

「アプリケーションが標準アーキテクチャを使用すると、すべてがより明確になります。アーキテクチャを知ることで、どこに何があるか、すべてがどのように相互作用するか、プログラムがどのように動作するか、必要なクラスをどこに追加するか、原因をどこで検索するかがわかります。バグです。」

「しかし、建築への標準的なアプローチに慣れていなければ、たとえ最高の建築であっても何も教えてくれません。あなたは新車を見ている中世の農民のようになるでしょう。標準的な車です。」

「なるほど。興味深い授業をありがとう、ビラーボ。」

「最後に、ぜひチェックしていただきたい良いリンクを紹介します。」

追加資料へのリンク