2011-10-22 5 views

答えて

88

デコレータは、「このエンティティにいくつかの機能を追加しましょう」というものです。プレゼンターは、「モデル/バックエンドとビューの間に架け橋を作ってみましょう。発表者パターンにはいくつかの解釈があります。

デコレータは汎用/汎用です。発表者は、より狭い責任範囲/用途を持っています。デコレータはドメイン間で使用され、プレゼンタはほぼ常にビューライクな機能に関連しています。

+3

ありがとうございました。ドレイパーの宝石は、プレゼンターとデコレーターのハイブリッドであるように思えます。 – keruilin

+16

@keruilin覚えておくべきこと:デコレータは、継承の限界を乗り越えることが目的の1つであるため、実際には他のデコレータをデコレートすることができます(コンポーネントオブジェクトをデコレートするだけでなく)。 (ドレイパーはこれをしません*)。デコレータ・パターンは、その意味でのコンポジット・パターンと非常に似ていますが、インサイド・アウトではなくアウト・インから処理されます(それが理にかなっていれば)。 – Smudge

+5

一般的なパターンとしてデコレータがあり、ビューレイヤに関連するデコレータの特定のアプリケーションとしてプレゼンターがあります。 – Kris

29

私はあなたがこれをチェックすることをお勧め - Exhibit vs Presenter

デコレータは、そのオブジェクトの他のインスタンスに影響を与えずに、特定のオブジェクトをラップすることによってその機能を拡張するために使用されるデザインパターンです。一般的に、デコレータパターンはopen/close principleの例です(クラスは修正のために閉じられていますが、拡張機能で利用可能です)。

展示と発表者の両方のパターンは、デコレータパターンの一種です。

+0

マイクパックのブログ記事へのリンク+1。パターン間の違いを説明する優れた投稿。展示パターンについては – ki4jnq

+0

+1とします。私はそれを説明するAvdi Grimmの本を手に入れました。しかし、それは私の問題のための適切な解決策ではありませんでしたが、それはまだ素晴らしいパターンです。思考のための優れた食べ物。 – Yonk