「こんにちは、アミーゴ!」
「こんにちは、ビラーボ!」
「あなたはすでに優秀なプログラマーです。それでは、今日は MVC についてのレッスンを行います。」
「MVC は、モデル—ビュー—コントローラーの略です。これは、アプリケーションが 3 つの部分に分割される、大規模なアプリケーション向けのアーキテクチャ設計パターンです。」
「最初の部分には、アプリケーションのすべてのビジネス ロジックが含まれています。この部分はモデルと呼ばれます。この部分には、アプリケーションが実行するために作成されたすべてのことを実行するコードが含まれています。この部分は、他の部分への依存度が最も低くなります。」
「2 番目の部分には、ユーザーへのデータの表示に関するすべてが含まれています。この部分はビューと呼ばれます。これには、ウィンドウ、ページ、メッセージなどの表示を制御するコードが含まれています。」
「3 番目の部分には、ユーザー アクションを処理するコードが含まれています。モデルの変更を目的としたユーザー アクションはすべてここで処理されます。この部分はコントローラーと呼ばれます 。」
「このアプローチでは、プログラムのロジック (モデル)、プログラムのデータをユーザーに表示するメカニズム (ビュー)、ユーザー入力/アクションのハンドラー (コントローラー) の3 つを独立して作成できます 。」
「アプリケーションには複数のビューがあることがよくあります。これは正常です。Excel ではまったく同じデータを数値と図の両方で表示できます。ゲームでは、一人称視点、三人称視点、マップ ビューなど、さまざまなビューからイベントを表示できます。これらはすべて、単一のモデルの異なるビューです。」
「ユーザーのアクションに応じてモデルの何を変更するかを決定するコードはすべて、 Controller に集められます。たとえば、ユーザーがプログラムを閉じることにした場合は、モデルのデータをディスク上のファイルに保存する必要があります。または、ユーザーが新しいデータを入力した場合は、それをモデルに追加する必要があります。その後、モデルはデータの変更についてすべてのビューに通知するため、データの現在の状態のみが表示されます。
「もう一度言ってください。」
「Java 開発者の観点からは、モデル、ビュー、コントローラーは次の 3 つのクラスのグループであると言えます。」
「a) 各部分には独自の目的があります。」
「b) 単一グループのクラス間の関係は非常に強い。」
「c) グループ間の関係が非常に弱い。」
「d) 部品が相互に通信する方法は厳しく規制されています。」
「そして、これをイメージする別の方法は次のとおりです。

「モデルはシステムの最も独立した部分です。モデルはビューやコントローラーに依存しません。モデルはビューまたはコントローラー グループのクラスを使用できません(!)。」
「ビューの主な制限は、モデルを変更できないことです。ビュー クラスはデータのモデルにアクセスしたり、イベントをサブスクライブしたりできますが、ビュー クラスはモデルを変更できません。」
「コントローラーの主な制限は、データが表示されないことです。コントローラーはユーザーのアクションを処理し、それに応じてモデルを変更します。」
「でも、なぜこれが必要なのでしょうか?」
「今これを使っていないということは、近い将来も使わなくなるということではありません。あなたは仕事を得るためにここで勉強しています。そして、たとえこの知識が将来役立つことが証明されなかったとしても、勉強はもちろん、仕事にも必ず役立ちます。」
「結局のところ、実際のプロジェクトとインタビューはまだあなたを待っています...」
「私たちは今ここで一緒に話をしていますが、おそらく1か月後にはあなたはすでに働いているでしょう。」
「まったくその通りです、ビラーボ。あなたの言うことをよく聞きます。」
「MVC パターンは、アプリケーション アーキテクチャでは非常に一般的です。その方が便利だからと言って、突然ビュー クラスをモデルに追加し始めないように、それを理解しておく必要があります。」
「どんなプロジェクトでも最も重要なことはそのアーキテクチャです。 この段階でのあなたの仕事は、良いアーキテクチャを作成できるようになることよりも、他の人のアーキテクチャを理解することを学ぶことです。あなたはまだ成長する必要があります。自分の作品を作成するまでに数年かかります。しかし、他の人が作成したものを理解する必要があります。すぐにでも。」
「アプリケーションが標準アーキテクチャを使用すると、すべてがより明確になります。アーキテクチャを知ることで、どこに何があるか、すべてがどのように相互作用するか、プログラムがどのように動作するか、必要なクラスをどこに追加するか、原因をどこで検索するかがわかります。バグです。」
「しかし、建築への標準的なアプローチに慣れていなければ、たとえ最高の建築であっても何も教えてくれません。あなたは新車を見ている中世の農民のようになるでしょう。標準的な車です。」
「なるほど。興味深い授業をありがとう、ビラーボ。」
「最後に、ぜひチェックしていただきたい良いリンクを紹介します。」
GO TO FULL VERSION