1

wikiで説明されている一般的なMVCパターンについて話しています。その厄介なピンクの写真は私を壊します。私はさまざまなものを見てきましたが、間接的な関連性を持つものはいつも私を困惑させました. http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93コントローラー

1 ビューがコントローラーと間接的に関連付けられているのはなぜですか?

ビューはモデルに基づいています - そのため、関連付けは直接的です

2 しかし、なぜモデルはビューと間接的に関連付けられているのでしょうか? ビューの存在についても知らず、知る必要もありませんか?

私は Java Servlets と Spring MVC を使用して開発を行っていますが、比較的新しい開発者であり、Martin Fowler によって議論された他の言語に過去にさかのぼると感じています。Spring MVC では、変な間接的な関連付けのない参加リンクとして常にコントローラーを使用するためです。

私はプログラミングを始めてまだ 3 年しか経っていないので、常に物事を適切に行うという考えで育ちました。たとえば、モデルが正確に何であるかである n 層と MVC を組み合わせた場合、完全に間違っていて非効率的である場合に、過去にビジネスロジックをモデルに保存するのはなぜですか?パラメーターとゲッター + セッターと MVC 全体を備えた単なるダムクラスです。当初意図したとおりに UI を提供するだけですか? DAO と DAOS + いくつかのロジックをカプセル化するサービス レイヤーがありますが、モデルとどのように関連していますか?

私の典型的なモデルは、従来の「Student」または「Car」クラスよりも複雑ではなく、通常はデータベースのテーブルに似ています (現時点では ORM を使用していません) 正しく使用できますか? DTO はモデルとどのように関係していますか?

4

1 に答える 1

1

1 ビューがコントローラーと間接的に関連付けられているのはなぜですか?

コントローラーは、モデルへの動作要求を仲介する責任があります。これは、1 つのオブジェクトにのみ影響する単純な「名前の変更」ではなく、モデル内に保持されている複数の共同オブジェクトを要求が変更する傾向があるためです。コントローラーがモデルへのアクセスを分離することで、ビューがモデルを変更するための簡単なアクセスを許可します (ビューが多くのモデル オブジェクト自体を変更するのではなく)。

View オブジェクト (クラス ボタンのインスタンスなど) はコントローラ オブジェクトを直接認識しないため、これは間接的な関連付けです。接続は後で適用する必要があります (例: onclick コールバック)。

ビューはモデルに基づいています - そのため、関連付けは直接的です

これは正確ではありません。直接の関連付けは委任リンクを表しています。View は、デリゲートする必要がある Model オブジェクトとは完全に別のオブジェクトです。

委任には、対象オブジェクトを理解する必要があるため、直接的な関連付けが必要です。View オブジェクトが情報を必要とする場合、情報の収集は Model オブジェクトに委譲され、続行するために View に返されます。

2 しかし、なぜモデルはビューと間接的に関連付けられているのでしょうか? ビューの存在についても知らず、知る必要もありませんか?

ビュー オブジェクトはモデルから情報を「引き出す」必要がありますが、これはおそらく非現実的です。Model と View の間の間接的な関連付けは、Model オブジェクトが変更されたときの View オブジェクトへのコールバックを表します (Observer パターンを確認してください)。これにより、モデルとビューの間の接続が「プッシュ」に変更されます。

于 2012-08-24T09:52:08.223 に答える