私が知る限り、オブジェクトプールは創造的なパターンであり、フライウェイトは構造的なパターンですが、実際にはその2つのパターンの間に非常に大きな違いがあります。誰かが私にその違いを説明してください。実装に役立つ?プールから取得したリソースは、通常は変更可能ですしながら、そのフライウェイトでFlyweightとObject Poolのパターン:それぞれ便利なのはいつですか?
19
A
答えて
26
1つの違いは、一般的に不変のインスタンスです。
フライウェイトを作成すると、同じ状態を含むオブジェクトの複数のインスタンスが繰り返し作成されるのを避けることができます(すべて同じであるため、アプリケーションのすべての場所で1つだけ作成して再利用します)。プールは個別に制御したい場合や異なる状態を持つ特定のリソースですが、同じ状態ですべて初期化されているため、作成および破棄のコストを支払う必要はありません。
5
少なくとも2つの大きな違いが頭に浮かぶ:
- 通常フライ級はドメインオブジェクトである一方、オブジェクトプールは、ドメインオブジェクトのセットのためのコンテナです。
- それぞれが異なる状態を表す異なるフライオブジェクトのセットは、通常ありながらオブジェクトプールは、通常、そのようなデータベース接続として同時に共有することができる類似のオブジェクトのセットを含みます。
1
このサイトでは、具体例を挙げて両方のパターンを説明しています。違いを明確にし、上記のGabrielの反応をサポートしています。 http://www.oodesign.com/
関連する問題
- 1. object()ビルトインはいつ便利ですか?
- 2. MVC - それぞれのjavascriptでコントロールをバンドルするのに便利ですか?
- 3. StateパターンとFlyWeightパターン
- 4. FlyweightとSingletonパターンの実用的な違いは何ですか?
- 5. Flyweightパターン:UnsharedConcreteFlyweight
- 6. CakeパターンとScalaでの関数の違い - Cakeパターンはなぜ便利ですか?
- 7. クラス継承を持つEventArgsですが、それは便利ですか?
- 8. --thunder-lockはいつ便利ですか?
- 9. ブルームフィルタはいつ便利ですか?
- 10. デーモンスレッドはいつ便利ですか?
- 11. __proto__はいつ便利ですか?
- 12. ウェブサービスとRPCは、それぞれいつ使用するのですか?
- 13. Java:それぞれの中でそれぞれのために?
- 14. それぞれオブジェクトですか?
- 15. それぞれのjQueryはそれぞれ?
- 16. 「<T> T get()」とはどういう意味ですか? (そして、それは便利です?)
- 17. JSではObserverパターンが便利ですか?
- 18. React/ReduxアプリケーションでXHRとルート変更に最も便利なパターン
- 19. 1つのレールアプリケーション、2つのドメイン、それぞれ異なるセッション
- 20. ラケットのそれぞれについてこの数字は何ですか
- 21. それぞれのTRで
- 22. @PrePassivateアノテーションと@PostActivateアノテーションはいつ便利ですか?
- 23. それぞれのビューでは?
- 24. sqliteのマニフェスト入力はいつ便利ですか?
- 25. これらはそれぞれ1つのUTF-8文字ですか?
- 26. ケーキのパターン - それはなぜとても複雑ですか
- 27. git rmは便利なコマンドですか?
- 28. それぞれをクローンし、それぞれに追加する
- 29. progressCallbackはなぜ便利ですか?
- 30. ADO対ADO.NET:それぞれをいつ使用するのですか?
ベストセラー!フライウェイトは通常、ユニークなアイテムだけを含んでいるため、メモリ量を最小限に抑えるために使用されています。オブジェクトプールはパフォーマンスを向上させますが、高いメモリ消費量をもたらします。 – Warlock
ある程度拡張すると、私はフライウェイトパターンも何かをキャッシュすると思います。単一の不変のフライウェイトがあまりにも多くのメモリを占める場合、メモリ節約を言うのは難しいです。これらの不変オブジェクトを1回作成して作成するよりも優れていると言うことができます。 – Chao