web-dev-qa-db-ja.com

Ruby on Railsパターン-デコレーターvsプレゼンター

Ruby on Rails decorators およびプレゼンターに関するコミュニティでは、あらゆる種類の講演が行われています。

2つの基本的な違いは何ですか?ある場合、どちらを使用するかを教えてくれる手がかりは何ですか?または、おそらく2つを組み合わせて使用​​するには?

108
keruilin

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

デコレータは汎用/汎用です。プレゼンターは、より狭い範囲の責任/用途を持っています。デコレータはドメイン全体で使用され、プレゼンターはほとんど常にビューのような機能に関連しています。

98
Dave Newton

これを確認することをお勧めします- 展示と発表者

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

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

32
dpaluy