Model-View-Controllerとは何ですか?
Model-View-Controller(MVC)は、プログラムの各要素を明確に定義された機能領域に分割するソフトウェアアーキテクチャとデザインパターンの一種です。 モデルビューコントローラーアーキテクチャでは、モデルはデータを操作、保存、取得、その他の方法で処理および計算するすべての内部プログラムロジックを処理します。 ビューアスペクトは、モデルの情報をユーザーに表示する役割を果たし、ユーザーがプログラムに入力する方法も提供します。 コントローラーはビューから入力を取得し、それを評価または処理し、モデルと対話してデータまたはプログラムの状態を変更します。これは最終的にビューを通じてユーザーに表示されます。 モデルビューアーコントローラーの設計では機能をカプセル化するプログラムが必要ですが、3つのセクションは依然として何らかの方法で相互作用する必要があり、一般に他のより積極的な設計パターンとは異なり、何らかの意味で相互に依存しています。
モデルビューコントローラーパターンは、グラフィカルユーザーインターフェイス(GUI)を管理するアプリケーションでよく見られます。 MVCパターンを使用すると、GUIのさまざまな視覚要素はビューによって処理され、ユーザーがクリックした場所と内容の記録と処理はコントローラーによって処理され、実際に情報を変更したり情報を読み込んだりするのはモデルによって行われます。 アプリケーションの正確な設計に応じて、MVCパターンの各コンポーネントは、他のコンポーネントと対話するメカニズムを持つことができます。たとえば、画面を更新するようにビューに指示したり、画面を更新しており、新しい入力を受け付けないことをコントローラー。 厳密なブラックボックスアプローチを採用する一部の設計パターンとは異なり、モデルビューコントローラープログラムはやや柔軟性が高い傾向がありますが、実装によってはMVCプログラムの変更やモジュール化のデバッグが困難になる場合があります。
特定のインスタンスでは、model-view-controllerパターンに各コンポーネントを1つだけ含める必要はありません。 1つの例は、複数のモニターなどの複数のビュー、または複数のクライアントデバイスで表示できるディスプレイを持つアプリケーションです。 複数のビューとコントローラーをアプリケーションで使用すると、多くのユーザーがデータベースにアクセスでき、すべてが単一のモデルに応答できます。 ただし、モデルビューコントローラコンポーネントの1対1の比率を維持するシステムを設計する方が一般的です。
model-view-controllerコンポーネントは互いに依存していますが、パターンがまったく使用されていない場合、特にオブジェクト指向ではない場合よりも、MVCパターンを使用するシステムの特定の部分を変更する方がはるかに簡単です。アプリケーション。 アプリケーションがコンポーネント間の相互作用を実装するためにコールバックまたはリスナーとオブザーバーを使用する場合、各コンポーネントは他の2つに影響を与えることなく変更できます。 これは、モデルまたはコントローラーに影響を与えることなく、新しいGUIを実装できることを意味します。 ただし、モデルビューコントローラーシステムの根本的な変更には、個々のコンポーネントごとに少量の再コーディングが必要になる場合があることに注意してください。