最近、Ruby on Railsコミュニティのdecoratorsとプレゼンターに関する話があります。Ruby on Railsのパターン - デコレータとプレゼンター
2つの間の本質的な違いは何ですか?もしあれば、どちらを使うべきか私に教えてくれる手がかりは何ですか?または、おそらく2つを組み合わせて使用しますか?
最近、Ruby on Railsコミュニティのdecoratorsとプレゼンターに関する話があります。Ruby on Railsのパターン - デコレータとプレゼンター
2つの間の本質的な違いは何ですか?もしあれば、どちらを使うべきか私に教えてくれる手がかりは何ですか?または、おそらく2つを組み合わせて使用しますか?
デコレータは、「このエンティティにいくつかの機能を追加しましょう」というものです。プレゼンターは、「モデル/バックエンドとビューの間に架け橋を作ってみましょう。発表者パターンにはいくつかの解釈があります。
デコレータは汎用/汎用です。発表者は、より狭い責任範囲/用途を持っています。デコレータはドメイン間で使用され、プレゼンタはほぼ常にビューライクな機能に関連しています。
私はあなたがこれをチェックすることをお勧め - Exhibit vs Presenter。
デコレータは、そのオブジェクトの他のインスタンスに影響を与えずに、特定のオブジェクトをラップすることによってその機能を拡張するために使用されるデザインパターンです。一般的に、デコレータパターンはopen/close principleの例です(クラスは修正のために閉じられていますが、拡張機能で利用可能です)。
展示と発表者の両方のパターンは、デコレータパターンの一種です。
ありがとうございました。ドレイパーの宝石は、プレゼンターとデコレーターのハイブリッドであるように思えます。 – keruilin
@keruilin覚えておくべきこと:デコレータは、継承の限界を乗り越えることが目的の1つであるため、実際には他のデコレータをデコレートすることができます(コンポーネントオブジェクトをデコレートするだけでなく)。 (ドレイパーはこれをしません*)。デコレータ・パターンは、その意味でのコンポジット・パターンと非常に似ていますが、インサイド・アウトではなくアウト・インから処理されます(それが理にかなっていれば)。 – Smudge
一般的なパターンとしてデコレータがあり、ビューレイヤに関連するデコレータの特定のアプリケーションとしてプレゼンターがあります。 – Kris