MVCパターンの構成要素の相互作用は、ウィキペディア上で、このように記載されています。
モデルは、アプリケーションのデータを管理する責任があります。これは、コントローラからのユーザ入力を受け取ります。ビューには、特定の形式でモデルのプレゼンテーションを意味しています。コントローラは、データ・モデル・オブジェクトのユーザ入力とを行う相互作用に応答します。コントローラは、必要に応じて、入力を受け取り、それを検証し、モデルへの入力を渡します。
私は、ビューがモデルと対話することはできないことを理解しています。しかし、私はネット上で見つけ図のほとんどに、MVCは次のように表されます。
私たちは、モデルがいることを確認できないビューと相互作用して、それを変更することができ、そしてそれは意味がありません。ていないモデルが更新コントローラー更新し、ビューを?
私は何をしないのですか?
MVCアーキテクチャは、1970年代に作成されました。明らかに、その現時点ではインターネットがありませんでした。元のバージョンでは、モデルは、直接を通じてビューを更新し、データバインディングとも呼ばれ、パブリッシュ/サブスクライブとしても知られている、Observerパターン。
四つのデザインパターンの本のギャングは詳細にこのMVCアーキテクチャを説明しています。その本からの引用のカップルは別の答えであるここに。
MVCアーキテクチャは、非常に人気があった、とインターネットを一緒に来たとき、開発者はそれを引き続き使用したいです。それは、クライアント/サーバアプリケーションにうまく適合しませんでした。このように、「WebMVC」あなたが最も一般的に、今日見たバージョンが生まれました。WebMVCは、典型的には、オリジナルではなかった階層化アーキテクチャとして実装されています。
二つのアーキテクチャが混同されているとき、混乱が続いて起こります。多くの場合、両方単にMVCと呼ばれています。さらに悪いことに、このようMVPとMVVMなどの関連アーキテクチャは、MVC呼び出すことができます。
個人的に、私は多少JavaとJavaScriptとの関係のようなデスクトップMVCとWeb MVCとの間の関係を見つけます。後者は大幅に異なる何かを実装するために、かつての有名な名前に便乗しました。