2009-06-05 4 views
0

Viewへの送信のためにモデルプロパティをフィルタリングするときにInterfaceの代わりにPresentationクラスを使用する理由を教えてください。プレゼンテーションクラスとビューフィルタリングのインターフェイス

+0

この質問はちょっとしたものです。どのプラットフォームを使用していますか?レール? ASP.NET MVC? MVPの実装ですか?他に何か? – jrista

+0

asp.net mvc .... – zsharp

+0

私はあなたの質問を拡大し、例を提供する必要があると思う...私は本当にあなたの尋ねるものを把握することはできません。 ASP.NET MVCにはコントローラとビューがあり、モデルデータを扱い、レンダリングします....しかし、私はどのプレゼンテーションクラスも知らない。 MVPでは、通常、プレゼンターへの参照を持つインターフェイスを持つビューがあり、ビューのインターフェイスへの参照があります。 – jrista

答えて

2

link text私はあなたが次のことを求めている考える

ビューにプロパティ のサブセットを渡す場合、スコープの知識を制限するために、数があります オプションこれらのうち、一つは含む 中間オブジェクト( 「プレゼンテーションクラス」または 「データ転送オブジェクト」)のモデルと他 から所望の特性をコピーするモデルが インタフェースを実装有し、その通過含みますビューへのインターフェイスは です。

なぜ前者を後者と反対の として使用しますか?

私の答えは、そのインターフェイスを実装するためにモデルにアクセスできないことがあることです。あなたがモデルを不要なインターフェースで汚染したくない場合は、理論的にはすべてのビューに対して異なるインターフェースを持つことができます。

ハイブリッドの代替方法は、アダプタパターンを使用してモデルをラップし、インターフェイスを実装し、モデルにインターフェイス呼び出しを委任するクラスを作成することです。

残りの部分よりも優れているオプションはありません。あなたの状況やスタイルによって異なります。

+0

最後の部分のアダプターパターンを理解していません – zsharp

+0

http://www.c2.com/cgi/wiki?AdapterPattern アダプターパターンを使用すると、インターフェースをサポートしていないクラスを、それを通常はインターフェースを実装しているラッパーの中に隠すことによってそれを適応させます。 – Talljoe

関連する問題