私はこのトピックに非常に慣れていないので、MVCを理解するための助けを少し前にここで尋ねました。私はそれをきちんと理解していると思いました、そしてこれは私がこの主題について最近書いたブログ投稿に文書化されています。私の理解は基本的にこれに要約されます:
コントローラー:要求を満たすために何をする必要があるかを決定し、必要に応じて収集/変更する必要のあるモデルを利用します。基本的には、特定のプロセスのマネージャーです。
ビュー:プレゼンテーションのみ。コントローラが必要なものを収集すると、特定のタイプのビューを作成し、情報を渡して、「これをユーザーに表示します」と言います。
モデル:アプリケーションの動作。コントローラが何かを抽出または変更するように要求すると、その方法を知っています。また、他のモデルをトリガーして関連タスクを実行することも知っています(私の理解では、モデルがStackOverflowで「何かに投票」しようとすると、そのモデルはバッジも付与する必要があるかどうかを尋ねます。コントローラーはそうしません。それを気にする必要があります)。
私の質問は、そのすべてが多かれ少なかれ正確であると仮定して、エンティティオブジェクトはどこから来るのですか?モデルとエンティティは同じものであり、各オブジェクトは独自のデータを永続化する方法を知っていますか、それともエンティティは独自に存在し、アプリケーション全体で使用される別個の概念ですか?
私のお金は後者にあります。これにより、モデルが独立して動作できるようになり、3つのレイヤー(モデル、ビュー、コントローラー)すべてがエンティティを利用して必要に応じてデータを渡すことができるからです。また、オブジェクトとデータベースの永続性は、分離する必要がある懸念事項のようです。
正直なところ、MVCについて読むほど、混乱が生じます。コアコンセプト(ロジックとは別のプレゼンテーション)を採用し、「MVC」ラベルについてあまり心配することなく、適切と思われる方法で実行する準備が整いました。