「MVC」の「コントローラー」には何が含まれますか? 質問する

「MVC」の「コントローラー」には何が含まれますか? 質問する

私はMVCの基本的な概念を理解していると思います。モデルはアプリケーションのデータと動作を含み、ビューはそれをユーザーに表示する役割を担い、コントローラーはユーザー入力を処理します。私が正確にはわからないのは、コントローラーに入ります。

たとえば、かなり単純なアプリケーションがあるとします (具体的には Java を考えていますが、同じ原則が他の場所にも当てはまると思います)。コードをapp.model、、app.viewおよびという 3 つのパッケージに整理しますapp.controller

パッケージ内にはapp.model、アプリケーションの実際の動作を反映するクラスがいくつかあります。これらはextends Observable、およびを使用してsetChanged()notifyObservers()適切な場合にビューの更新をトリガーします。

パッケージapp.viewには、コンポーネントを使用してディスプレイを処理するクラス (またはさまざまなタイプのディスプレイ用の複数のクラス) がありますjavax.swing。これらのコンポーネントの一部は、モデルにフィードバックする必要があります。私の理解が正しければ、ビューはフィードバックとは何の関係もありません。フィードバックはコントローラーによって処理されるはずです。

では、コントローラには実際に何を入れればよいのでしょうか?public void actionPerformed(ActionEvent e)コントローラのメソッドを呼び出すだけでビューに入れますか? その場合、コントローラで検証などを行う必要がありますか? その場合、エラー メッセージをビューにフィードバックするにはどうすればよいでしょうか。モデルを再度経由する必要がありますか、それともコントローラはエラー メッセージをビューに直接返すだけでよいのでしょうか?

検証がビューで行われる場合、コントローラーには何を配置すればよいでしょうか?

長い質問で申し訳ありません。私はただプロセスについての私の理解を文書化したかっただけです。そして、誰かが私にこの問題を明確にしてくれることを願っています。

ベストアンサー1

あなたが提案した例では、その通りです。インターフェイスの「ユーザーが「このアイテムを削除」ボタンをクリックした」は、基本的にコントローラーの「削除」関数を呼び出すだけです。ただし、コントローラーはビューがどのようになっているかを把握していないため、ビューは「どのアイテムがクリックされたか」などの情報を収集する必要があります。

会話形式では:

ビュー: 「コントローラーさん、ユーザーが項目 4 を削除したいと言ってきました。」
コントローラ: 「うーん、彼の資格情報を確認したところ、それは許可されているようです... ねえ、モデルさん、アイテム 4 を入手して、何でもして削除してください。」
モデル: 「アイテム 4... 了解しました。削除しました。コントローラーに戻ります。」
コントローラ: 「さあ、新しいデータを集めます。戻ります、ビュー。」
ビュー: 「よし、新しいセットをユーザーに見せましょう。」

そのセクションの最後には、ビューが「最新のデータ セットをください」という別の要求を行ってより純粋になるか、コントローラーが「削除」操作で新しいデータ セットを暗黙的に返すかのオプションがあります。

おすすめ記事