MVC: ビューはモデルと直接通信する必要がありますか? 質問する

MVC: ビューはモデルと直接通信する必要がありますか? 質問する

以前は、多くの開発者は、ほとんどのフレームワークがそうであるように、ビューはモデルと直接通信すべきではないという意見を持っていました。

そして、この意見は間違っているようです。いくつかの記事を見つけましたが、これらの記事では、ビューはモデルと直接通信できると書かれています。

http://r.je/views-are-not-templates.html
http://www.tonymarston.net/php-mysql/モデルビューコントローラ.html
モデル、ビュー、コントローラーの混乱
そして
MVC ではモデルをどのように構造化すればよいでしょうか?

これらの記事のほとんどはWikipediaから引用しています。モデル・ビュー・コントローラ引用文は次のとおりです。

ビューは、適切なユーザー インターフェイスを生成するためにモデルにクエリを実行します (たとえば、ビューはショッピング カートの内容を一覧表示します)。ビューはモデルから独自のデータを取得します。一部の実装では、コントローラーはビューに自分自身をレンダリングするための一般的な指示を発行する場合があります。他の実装では、画面の更新を必要とする状態の変化がモデル (オブザーバー) によってビューに自動的に通知されます。

ああ、それはウィキペディアからのもの、とても権威のあるサイトだから、正しいに違いない!

しかし今、MVCのWikiリンクを開くとhttp://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93コントローラこのページは今年(2013年)9月14日に編集され、上記の文章は削除されました。

ビューの新しい定義は次のとおりです。

ビューは、ユーザーへの出力表現を生成するために必要な情報を、コントローラーを介してモデルに要求します。

今また混乱しています。新しい定義では、ビューはモデルからデータを要求する必要があると書かれていますを通してコントローラー...

ビューは地球上で直接モデルにアクセスする必要がありますか?

ベストアンサー1

以下は、従来の MVC アーキテクチャにおける依存関係の表現です。これは新しく追加されたものなので、コントローラーからビューを指す矢印がないことに気が付くでしょう。

ここに画像の説明を入力してください
Source: GUI architectures

そして、"MVC フレームワーク" で通常見られるものに近い依存関係マップがあります。

受動的な見方
Source: Passive view

「パッシブビュー」構成はないMVCアーキテクチャの一部です。同じ名前を使用していますが、実際には最優秀選手パターン(より長く詳細な説明はこの出版物

結論:はい、MVC または MVC のようなアーキテクチャを実装している場合、ビューはモデル レイヤーから情報を要求する必要があります。

また、これはないいわゆる「MVC フレームワーク」が推進しているものです。Rails のようなフレームワークにはビューがありません。代わりに (元の構造はプロトタイプ用に作成されたため)、ビューはダム テンプレートに置き換えられ、ビューのすべての責任は「コントローラー」と呼ばれるものに押し込まれます。

基本的に、私の意見では、Railsのようなパターンに名前を付ける最良の方法はオルト: ORM ロジック テンプレート。

おすすめ記事