6

私はこのトピックに非常に慣れていないので、MVCを理解するための助けを少し前にここで尋ねました。私はそれをきちんと理解していると思いました、そしてこれは私がこの主題について最近書いたブログ投稿に文書化されています。私の理解は基本的にこれに要約されます:

コントローラー:要求を満たすために何をする必要があるかを決定し、必要に応じて収集/変更する必要のあるモデルを利用します。基本的には、特定のプロセスのマネージャーです。

ビュー:プレゼンテーションのみ。コントローラが必要なものを収集すると、特定のタイプのビューを作成し、情報を渡して、「これをユーザーに表示します」と言います。

モデル:アプリケーションの動作。コントローラが何かを抽出または変更するように要求すると、その方法を知っています。また、他のモデルをトリガーして関連タスクを実行することも知っています(私の理解では、モデルがStackOverflowで「何かに投票」しようとすると、そのモデルはバッジも付与する必要があるかどうかを尋ねます。コントローラーはそうしません。それを気にする必要があります)。

私の質問は、そのすべてが多かれ少なかれ正確であると仮定して、エンティティオブジェクトはどこから来るのですか?モデルとエンティティは同じものであり、各オブジェクトは独自のデータを永続化する方法を知っていますか、それともエンティティは独自に存在し、アプリケーション全体で使用される別個の概念ですか?

私のお金は後者にあります。これにより、モデルが独立して動作できるようになり、3つのレイヤー(モデル、ビュー、コントローラー)すべてがエンティティを利用して必要に応じてデータを渡すことができるからです。また、オブジェクトとデータベースの永続性は、分離する必要がある懸念事項のようです。

正直なところ、MVCについて読むほど、混乱が生じます。コアコンセプト(ロジックとは別のプレゼンテーション)を採用し、「MVC」ラベルについてあまり心配することなく、適切と思われる方法で実行する準備が整いました。

4

2 に答える 2

5

はい!

モデルが独立して行動できるようになるので、私のお金は後者にあります

ビューに他のデータも必要な場合は、エンティティにバインドする必要があるため、ビューをエンティティにバインドしたくありません。モデルはビューを完全にサポートしており、そのビューをサポートすることにのみ関心があります。

たとえば、エンティティのリストを表示すると、他にどのようなデータが必要になるでしょうか? 現在のページ番号? 総ページ数?表示されるカスタム メッセージ?

これが、必要に応じてデータ項目を自由に追加できるモデルにバインドする必要がある理由です。

アップデート

これがMVCの動作の説明です...

コントローラーは、要求に必要なすべてのデータを取得し、それをモデルに入れます。次に、モデルをビューに渡します。

次に、ビューはモデル内のデータのレイアウトを処理します。

于 2010-09-29T07:42:39.780 に答える
0

各モデルは、そのデータを制御および使用するためのいくつかのメソッドを含む 1 つのエンティティにすることができます。
それは十分ですか?

于 2010-09-29T07:42:31.857 に答える