Builder パターンと Flyweight パターンの使用方法の違いは何ですか? どちらも多数のオブジェクトを処理します。
3 に答える
Builder パターンは多くのオブジェクトを作成するために使用されますが、Flyweight パターンはそのようなオブジェクトのコレクションを共有することを目的としています。
これら 2 つのパターンはどちらも「複合」、つまり複数の要素を持つオブジェクトを扱いますが、一緒に使用する必要はまったくありません。Flyweight のアーキタイプ ユース ケースは、数十文字のオブジェクトのプールがテキスト エディター アプリケーションで何度も使用される場合です (これは、「GoF」本に記載されている例です) 。
ウィキペディアから直接。
Flyweight はソフトウェア設計パターンです。flyweight は、他の同様のオブジェクトとできるだけ多くのデータを共有することによって、メモリの使用を最小限に抑えるオブジェクトです。これは、単純な反復表現が容認できない量のメモリを使用する場合に、多数のオブジェクトを使用する方法です。
Builder パターンは、ソフトウェアの設計パターンです。これらのステップの異なる実装がオブジェクトの異なる表現を構築できるように、オブジェクト構築のステップを抽象化することを意図しています。
1 つはオブジェクトの構築に役立ち、もう 1 つはメモリの使用に役立ちます。ビルダーを使用して、さまざまな flyweight オブジェクトを「ビルド」することができます。
flyweight パターンは、「多くのオブジェクトを操作する必要があり、これらに無関係なデータを含める余裕がない」場合に適しています。Java では、String オブジェクトは flyweight として管理されます。Java はすべての固定文字列リテラルをリテラル プールに入れます。冗長なリテラルの場合、Java はプールにコピーを 1 つだけ保持します。
flyweight を機能させるための鍵は、ファクトリ メソッドまたはビルダー デザイン パターンを使用してオブジェクトのインスタンス化を制御することです。ファクトリ メソッドの仕事は、単純にオブジェクトを作成することです。入力条件を指定すると、適切な型のオブジェクトが返されます。
抽象ファクトリは、複雑なオブジェクトを構築できるという点でビルダーに似ています。主な違いは、Builder パターンが複雑なオブジェクトを段階的に構築することに重点を置いていることです。抽象要素の重点は、製品オブジェクトのファミリー (単純または複雑) にあります。