ビルダーパターンとフライウェイトパターンの違いは何ですか?
-
20-09-2019 - |
質問
Builder パターンと Flyweight パターンはどちらも多数のオブジェクトを処理しますが、使用方法の点での違いは何ですか?
解決
Builder パターンは次の目的で使用されます。 作成する 多くのオブジェクト、つまりフライウェイト パターンは約 共有 このようなオブジェクトのコレクション。
これら 2 つのパターンはどちらも「複合物」を扱います。オブジェクトには複数の要素が含まれる場合がありますが、それらを一緒に使用する必要はまったくありません。Flyweight のアーキタイプのユースケースは次のとおりです。 数十個のキャラクターオブジェクトのプール テキスト エディタ アプリケーションで何度も使用されます (これは、 『GoF』本)
他のヒント
ストレートウィキペディアから。
フライ級は、ソフトウェアの設計です パターン。フライ級は、そのオブジェクトであります 共有することにより、メモリの使用を最小限に抑えます 他で可能な限り多くのデータ 類似したオブジェクト。それを使用する方法です 大量にオブジェクトをする場合、単純な 繰り返し表現を使用します メモリの許容できない量ます。
Builderパターンは、ソフトウェアであります デザインパターン。意図があるに の建設の抽象ステップ オブジェクト異なるように これらの手順の実装することができます の異なる表現を構築 オブジェクトます。
一つは、建物オブジェクトとメモリ使用量と、他の助けを借りてのに役立ちます。あなたが潜在的に異なるフライ級オブジェクトを「構築」するためにビルダーを使用することができます。
Flyweightパターンは適切ですJavaでは、Stringオブジェクトは、フライ級として管理されています。 Javaは、リテラルプールにすべての固定文字列リテラルを置きます。冗長リテラルについては、Javaは、プール内のコピーを1つだけ保持します。
フライ作業を行うための鍵は、ファクトリメソッドまたはビルダーデザインパターンを使用して、オブジェクトのインスタンス化を制御することです。適切なタイプのオブジェクトを返す、指定された入力基準:ファクトリメソッドのジョブオブジェクトを作成するだけです。
抽象工場は、それはあまりにも複雑なオブジェクトを構築することができるという点でビルダーに似ています。主な違いは、Builderパターンがステップによって複雑なオブジェクトのステップを構築に焦点を当てていることです。抽象要因の重点は、製品のオブジェクト(単純または複合体のいずれか)の家族です。